对我的 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
中使用 ==
进行字符串比较,但 =
在 bash
和 sh
.
中有效
#! /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 不存在时会发生什么? (无论出于何种原因)。
所以我有一个 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
中使用 ==
进行字符串比较,但 =
在 bash
和 sh
.
#! /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 不存在时会发生什么? (无论出于何种原因)。