所以我的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
我希望有人可以告诉我我做错了什么,并希望能解释一下我在过程中错过的事情。
答案 0 :(得分:0)
小心bash脚本比较。
将字符串括在引号(或其他方法)中,因此当字符串变量评估为 empty 时,这不是语法错误。您可以在==
中使用bash
进行字符串比较,但是=
在bash
和sh
中有效。
#! /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显示不存在时会发生什么? (无论出于何种原因)。