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

Alternating File Contents on startup (sh bash)

在我的 /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

问题区域是从'value'到最后'fi'的部分。

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

音频可以播放,因此文件正在 运行。我假设我的 IF 语句有问题?

有什么想法吗?

尝试改变

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

进入

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

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

您的脚本中有一些错误。以下是您的脚本,但包含我的修复程序

_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