将包含变量的多行命令插入到文件中

将包含变量的多行命令插入到文件中

我正在尝试创建一个脚本来配置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不是自己解释这些反引号。

为了解决这个问题,你需要使用两个反斜杠 ( \\)仅有的用于换行符前面的反斜杠。

相关内容