启动时交替文件内容(sh bash)

时间:2015-09-21 22:28:01

标签: bash sh

在我的/etc/rc.local文件中,我有这段代码:

_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

value='cat  /var/www/key.txt'
if ["$value" = "0"] then 
    sed -i 's/0/1/g' /var/www/key.txt
fi
if ["$value"= "1"] then
    sed -i 's/1/0/g' /var/www/key.txt
fi 
mpg321 /var/www/sounds/startup.mp3 >  /dev/null 2>/dev/null &
exit 0

问题区域是从“值”到最后一个“fi”的部分。

我想要发生的是/var/www/key.txt的文件内容在“1”和“0”之间的每次启动时交替。这似乎不会发生。

音频确实播放,因此正在运行该文件。我认为我的IF语句有问题吗?

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您的脚本中有一些错误的内容。以下是您的脚本,但有我的修复

_IP=$(hostname -I) || true
if [ "$_IP" ]; then
   printf "My IP address is %s\n" "$_IP"
fi

value=`cat  /var/www/key.txt`
if [ "$value" = "0" ]; then
   sed -i 's/0/1/g' /var/www/key.txt
fi
if [ "$value" = "1" ]; then
   sed -i 's/1/0/g' /var/www/key.txt
fi
mpg321 /var/www/sounds/startup.mp3 >  /dev/null 2>/dev/null &
exit 0

答案 1 :(得分:0)

尝试更改

value='cat  /var/www/key.txt'

value=`cat /var/www/key.txt`

第一个版本中的撇号(')只引用字符串,将变量value设置为文字字符串cat /var/www/key.txt,这显然不是您想要的。如果您希望将字符串作为命令执行并在其位置替换其输出,则需要使用反引号(`)。