对我的 RPI 切换显示的脚本进行故障排除

Troubleshooting a script for my RPI to toggle displays

所以我有一个 Quimat LCD 连接到我的 gpio。

包含一个脚本,其中 运行s 用于切换到显示器 (LCD35-show),另一个用于切换回 HDMI 端口 (LCD-hdmi)。完成后这会导致重新启动,因此任何变量更改都必须在此之前发生。

因为这是给害怕触摸命令提示符的妈妈,所以我尝试设置一个单独的图标来用于在视频源之间切换。

我是编码新手,我的大部分经验来自于 BASIC,我花了几天时间搜索并尝试设置它,但显然我无法正确搜索,因为我无法获得它正在运行。

到目前为止我所做的是:

创建了文本文件 state.txt 来保存说明设备所处模式(HDMI 或 LCD)的变量

我的尝试是读取变量,然后使用 if then 语句确定要 运行 的文件,更改变量然后 运行 文件。

这是我最终得到的代码。

!/bin/bash
read var < state.txt
if var == HDMI
then 
    echo LCD > state.txt
    cd LCD-show/
    sudo ./LCD35-show
else
    echo HDMI > state.txt
        cd LCD-show/
    sudo ./LCD-hdmi
fi

我希望有人能告诉我我做错了什么,并希望能解释我在这个过程中遗漏了什么。

小心 bash 脚本比较。 将字符串用引号括起来(或其他一些方法),因此当字符串变量计算为 empty 时,这不是语法错误。您可以在 bash 中使用 == 进行字符串比较,但 =bashsh.

中有效
#! /bin/bash
EXE=`basename "[=10=]"`
LCD_DIR="LCD-show"   
STATE_FILE="state.txt"

if [ ! -d "$LCD_DIR" ]; then
    echo "$EXE: $LCD_DIR does not exist"
    exit 1
fi

read var < state.txt  
if [ "$var" = "HDMI" ]; then
    echo LCD > "$STATE_FILE"
    cd "$LCD_DIR"
    sudo ./LCD35-show
else
    echo HDMI > "$STATE_FILE"
    cd "$LCD_DIR"
    sudo ./LCD-hdmi
fi

好的脚本和好的脚本之间的区别在于错误处理。 当 dir LCD-show 不存在时会发生什么? (无论出于何种原因)。