GNU nano 2.7.4 File: /home/pi/initDisplay/initDisplay.sh
#!/usr/bin/env bash
#HDMI connection?
rm -f hdmi.name
tvservice -n 2>hdmi.name
HDMI_NAME=`cat hdmi.name`
echo $HDMI_NAME
if [ "$HDMI_NAME" == "[E] No device present" ]; then
LCD_ON=`cat /boot/config.txt | grep "#CONFIGURAZIONEHDMI"`
echo $LCD_ON
if [ "$LCD_ON" == "#CONFIGURAZIONEHDMI" ]; then
echo "reboot con la configurazione LCD"
sudo rm -f /boot/config.txt
sudo cp /boot/config_lcd.txt /boot/config.txt
sleep 2
sudo reboot -n
fi
else
HDMI_ON=`cat /boot/config.txt | grep "#CONFIGURAZIONELCD"`
echo $HDMI_ON
if [ $HDMI_ON == "#CONFIGURAZIONELCD" ]; then
echo "reboot con la configurazione HDMI"
sudo rm -f /boot/config.txt
sudo cp /boot/config_hdmi.txt /boot/config.txt
sleep 2
sudo reboot -n
fi
fi
不使用if
开始$LCD_ON
语句的arg。当我尝试执行它时,它不会返回我期望的结果。现在返回:
[E] no device detected
#CONFIGURAZIONEHDMI
但它不会开始替换文件并重新启动。
P.S .:用户和文件拥有执行此权限的权限 而且我已经将chmod 777设置为文件
答案 0 :(得分:2)
可能会有更多匹配的行,例如多余的空格,因此相等性测试并不完全匹配。
如果要测试文件中是否存在匹配的行,可以仅测试grep
的退出状态,而不是将输出存储在变量中。
if grep -q "#CONFIGURAZIONEHDMI" /boot/config.txt; then
echo "reboot con la configurazione LCD"
sudo rm -f /boot/config.txt
sudo cp /boot/config_lcd.txt /boot/config.txt
sleep 2
sudo reboot -n
fi
-q
选项告诉grep
不要打印匹配的行,它只是设置退出状态。