[问题] shell script 中的sed传递变量请益

楼主: stonys (蝶恋影)   2019-03-26 14:53:58
大家好
我想利用修改crondtab的方式来达成esxi排程关机
在shell script中写
sed -i '$a 40 9 $1 $2 * /sbin/poweroff ' file name
然后使用 sh xxx.sh 22 3
原本是期望能将月,日的参数传进去$1,$2里
结果看档案最后一行还是一样是$1,$2
Google了一下,尝试把单引号改成双引号
结果会出现sed:unsupported command 9
想请教一下该如何修正呢?谢谢!
作者: kenwufederer (Nash)   2019-03-26 17:24:00
你要不要先查sed的用法?
作者: goldie (阿良)   2019-03-26 17:25:00
改双引号后 $a 前面需加个反斜线成 \$a
作者: Gold740716 (项为之强)   2019-03-26 18:31:00
原来那个 $a 是在最后一行后附加的意思
楼主: stonys (蝶恋影)   2019-03-26 19:46:00
我知道$a是在最后一行附加的意思(这就是我想要的)谢谢2F,看来是类似脱逸字符的用法,我明天再试试看!
作者: yvb   2019-03-26 21:24:00
这样也可: sed -i '$a'"40 9 $1 $2 * /sbin/poweroff" file
作者: rickieyang (Rickie Yang)   2019-03-27 01:13:00
没条件的在最后一行附加上去,echo 不就好了...
作者: sppmg (sppmg)   2019-03-29 12:06:00
awk, sed 碰到这种我都用 sed 'aaaaa' "$var" 'aaaa'单双引号间不用/能空格,纯粹是方便阅读

Links booklink

Contact Us: admin [ a t ] ucptt.com