bash - sh/bash 如何正确编写 if 循环以获取输入以及如何实现无限循环脚本
问题描述
基本上,我正在尝试
- 获得 gpios 的访问权限
- 将方向设置为输出
然后为用户界面实现一个无限循环
它应该得到用户输入lid
和onoff
那么如果lid
小于 1它应该会中断
如果输入打开,它应该为 gpio 提供 1 个值
如果输入关闭,它应该为 gpio 提供 0 值
然后在循环结束后,它应该将方向设置为输入并取消导出 gpios
我的问题是,每当我尝试实现脚本时,它所做的第一件事就是设置导出 gpios 并将其值设置为 1,然后要求我输入lid
并onoff
输入,lid
输入不会改变任何内容,并且在输入 on off 输入后没有不管我的输入是什么,gpio 值设置为 0
我也尝试使用while true; do done
无限循环,但我遇到了问题
#!/bin/sh
echo "30" > /sys/class/gpio/export
echo "31" > /sys/class/gpio/export
echo "high" > /sys/class/gpio/gpio30/direction
echo "high" > /sys/class/gpio/gpio31/direction
read -p "light_iid" int lid
read -p "on/off" str onoff;
if ! [ $lid ‐lt 1 ];
then
break
fi
if [ $onoff != "on" -a $onoff != "off" ];
then
break
fi
if ! [ $onoff_str == "on" ]
then
echo "1" > /sys/class/gpio/gpio30/value
echo "1" > /sys/class/gpio/gpio31/value
fi
if ! [ $onoff_str == "off" ]
then
echo "0" > /sys/class/gpio/gpio30/value
echo "0" > /sys/class/gpio/gpio31/value
fi
echo "low" > /sys/class/gpio/gpio30/direction
echo "low" > /sys/class/gpio/gpio31/direction
echo "30" > /sys/class/gpio/unexport
echo "31" > /sys/class/gpio/unexport
解决方案
推荐阅读
- git - 如何在 Git 中对 XL 发布模板进行版本化?
- yolov4 - 我如何在 Yolov4 上实现 NMS(非最大抑制)
- git - 超过 gitlab-runner 日志大小
- android - Flutter - 拉动以刷新我的 webview 的包限制高度
- mysql - Express js - 如何从响应中删除某些字段
- git - 如何将当前本地分支与来自远程存储库中不同分支的特定单个提交合并?
- javascript - 如果按顺序执行,带有数据库重置的笑话测试会失败
- matlab - Simscape 电气
- python - Python for 循环执行非常慢!如何做的更好
- python - statsmodels.tsa._stl.STL "无法确定 endog 的周期"