我正在尝试创建一个脚本来配置rc.local
文件。我需要exit 0
在行前插入带有变量的多行命令。
例如,
- 变量
VARIABLE=31
- 原始
rc.local
文件:
#!/bin/bash
#
# rc.local
#
# blah blah...
exit 0
rc.local
执行后需要setup.sh
:
#!/bin/bash
#
# rc.local
#
# blah blah...
if [ `gpio read 31` = 1 ]; then # this 31 is the value of VARIABLE
do_something
fi
exit 0
这是我的尝试:
VARIABLE=31
sed "/^exit 0/i \
if [ \`gpio read $VARIABLE\` = 1 ]; then \
do_something \
fi" -i rc.local
但结果rc.local
是
#!/bin/bash
#
# rc.local
#
# blah blah...
if [ `gpio read 31` = 1 ]; then do_something fi
exit 0
我无法得到换行符。
如果我使用\n
,它会出错
unknown command: `m'
如何解决这个问题?
答案1
这是因为您在命令中使用了双引号 ( "
) sed
。
反斜杠被这样解释并消耗由跑步shell,就像它对反引号前面的那些一样,我相信你正是用它来制作你正在运行的shell不是自己解释这些反引号。
为了解决这个问题,你需要使用两个反斜杠 ( \\
)仅有的用于换行符前面的反斜杠。