需求分件
配置文件如下:
我们现在让要程序能执行command列中的命令,即当某个按钮的状态发生变化时,它能去执行command中的脚本命令。
具体来说,这里当第一个名为led
的按钮的状态发生变化时,它能去执行脚本led.sh
脚本文件led.sh
脚本文件led.sh
的分析
#!/bin/sh
status=$1
if [ "$status" = "ok" ]
then
echo "led has been tested, it is ok"
fi
if [ "$status" = "err" ]
then
echo "led has been tested, it is fail"
fi
以下是对这个脚本文件的分析。
第一行代码#!/bin/sh
第一行 #!/bin/sh
称为 Shebang(或Sha-bang),它的作用是指明该脚本文件应该使用哪种解释器来执行。
具体解释:
-
#
和!
组成的标记:#!
是特殊的标记,表示这是一个脚本文件的开头。
-
/bin/sh
:- 指定了用
/bin/sh
作为解释器来运行该脚本。 /bin/sh
通常是指向 Bourne Shell 或其兼容版本(如 Dash)的符号链接。在多数现代 Linux 系统中,/bin/sh
通常较轻量,用于运行简单脚本。
- 指定了用
-
作用:
- 当你运行这个脚本(例如通过
./led.sh ok
),系统会根据#!/bin/sh
找到/bin/sh
程序,然后使用它来解释和执行脚本的内容。 - 如果没有这个 Shebang 标记,脚本可能无法正确执行,或需要明确指定解释器(例如
sh led.sh ok
)。
- 当你运行这个脚本(例如通过
简而言之:#!/bin/sh
指定了该脚本应由 /bin/sh
解释器运行,是 Linux 脚本的标准开头,确保脚本能正确被系统识别和执行。
第二行代码status=$1
【理解整个脚本文件功能的关键】
第二行代码 status=$1
的作用是将脚本运行时传递的第一个命令行参数赋值给变量 status
。
详细说明:
-
$1
:- 表示脚本运行时传递的第一个参数。
- 在 Shell 脚本中,
$1
是一个 位置参数,代表命令行中的第一个参数。 - 其他位置参数包括
$2
(第二个参数),$3
(第三个参数),以此类推。
-
status=$1
:- 将
$1
的值赋给变量status
。 status
是一个普通的 Shell 变量,用于保存传递的参数值。
- 将
-
用法示例:
如果脚本led.sh
是这样运行的:./led.sh ok
$1
的值为ok
。- 变量
status
被赋值为ok
,后续脚本中的status
都会使用这个值。
示例分析:
以脚本内容为例,运行:
./led.sh ok
status
的值是ok
,因此脚本会执行以下分支:if [ "$status" = "ok" ] then echo "led has been tested, it is ok" fi
如果运行:
./led.sh err
status
的值是err
,脚本会执行另一分支:if [ "$status" = "err" ] then echo "led has been tested, it is fail" fi
脚本文件上板运行
我们要想咱们的程序能执行这个脚本文件,先要测试下这个脚本文件自身是否能够运行…
将脚本文件放于NFS文件的目录support_command
中
然后开发板上执行下面的运令:
cd /mnt/support_command