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不要打印匹配行,它只是设置它的退出状态。