首頁  >  問答  >  主體

shell - 關於linux腳本中$變數在字串「」和『』中使用的問題

關於linux中變數$foo在「」引號中的問題

現在從命令列取得了一個傳入參數$1,假設$1的值為666
想把$1用在sed -i中,假設指令為sed -i “ s/foo/$1/g” file.txt
現在需要寫一個ant的build.xml(可以理解為一個腳本),需要實作sed這條指令:

<exec executable="/usr/bin/sed" dir="common/self_cleaning_builder">
    <arg line="#我需要的那条sed指令"/>
</exec>

我应该如何把这个sed指令放入arg标签下的line=“”中,才能使得我放进去的指令可以被正确读出且实现功能?引号太多了,怎么写都实现不了功能。

我寫的是:

<exec executable="/usr/bin/sed" dir="/common">
    <arg line='-i -r "s/foo//g" file.txt'/>
</exec>

以及

<property name="regex" value="s/input//g"/>
<exec executable="/usr/bin/sed" dir="/common">
    <arg line="-i -r $regex file.txt"/>
</exec>

但都無法實現我要的功能。

看了一些講「」和『』的貼文還是不知道該怎麼解決這個問題,還望各位賜教

女神的闺蜜爱上我女神的闺蜜爱上我2688 天前860

全部回覆(2)我來回復

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-07-03 11:43:33

    自己寫一個sedwrapper就行,你這樣直接使用sed會首先獲取到參數,並且
    認為那是一個文件,$1就起不了作用了

    認為那是一個文件,🎜$1🎜就起不了作用了🎜

    回覆
    0
  • PHP中文网

    PHP中文网2017-07-03 11:43:33

    $1在shell腳本裡是輸入參數,但在ant腳本裡不是,另外你在命令列呼叫ant的時候,不可能按位置傳參數,必須要指定參數名稱:

    ant <your target> -Darg1=value1

    在ant腳本裡使用${arg1}來存取變數:

    <arg line="-i -r 's/foo/${arg1}/g' file.txt"/>

    回覆
    0
  • 取消回覆