在我的/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语句有问题吗?
有什么想法吗?
答案 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
,这显然不是您想要的。如果您希望将字符串作为命令执行并在其位置替换其输出,则需要使用反引号(`)。