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

时间:2018-09-20 02:01:58

标签: shell raspberry-pi sh raspbian

所以我的gpio上装有Quimat LCD。

包含一个脚本,该脚本可运行以切换到显示器(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

我希望有人可以告诉我我做错了什么,并希望能解释一下我在过程中错过的事情。

1 个答案:

答案 0 :(得分:0)

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

#! /bin/bash
EXE=`basename "$0"`
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显示不存在时会发生什么? (无论出于何种原因)。