If 语句不执行参数
If statement doesn't execute argument
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
不以 $LCD_ON
开始 if
语句的 arg。当我尝试执行它时,它并没有 return 我所期望的。现在 returns:
[E] no device detected
#CONFIGURAZIONEHDMI
但它没有开始替换文件并重新启动。
P.S.: 用户和文件有权限做
我已经设置了 chmod 777 文件
匹配的行中可能有更多内容,例如额外的空格,因此相等性测试不完全匹配。
如果要测试文件中是否存在匹配行,可以只测试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
不要打印匹配行,它只是设置它的退出状态。
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
不以 $LCD_ON
开始 if
语句的 arg。当我尝试执行它时,它并没有 return 我所期望的。现在 returns:
[E] no device detected
#CONFIGURAZIONEHDMI
但它没有开始替换文件并重新启动。
P.S.: 用户和文件有权限做 我已经设置了 chmod 777 文件
匹配的行中可能有更多内容,例如额外的空格,因此相等性测试不完全匹配。
如果要测试文件中是否存在匹配行,可以只测试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
不要打印匹配行,它只是设置它的退出状态。