我正在尝试创建一个 Bash 脚本,该脚本将在系统启动时运行并修改多个 ttyA 端口的权限。我不确定如何解决这个问题,想知道是否可以获得一些帮助。
我当前的代码是:
#!/bin/bash
TTYA=$ ls /dev/ttyA11
echo $TTYA
echo 'outside'
if [[ $$TTYA == 'ttyA11' ]]
then
echo 'inside'
chmod g+rw /dev/ttyA*
fi
输出:
$ sudo ./rc.serial
/dev/ttyA11
outside
if
不幸的是,由于该声明不正确,因此该方法不起作用。我不确定我是否正确地告诉我的变量检查ttyA11
.
答案1
您的脚本有许多问题需要注意。
TTYA=$ ls /dev/ttyA11
不确定您要在这里完成什么,但如果您这样做TTYA=$(ls /dev/ttyA11)
(请注意将命令的输出分配给变量的正确语法),TTYA
则将包含/dev/ttyA11
(如果该设备存在)。
echo $TTYA
您可能应该在此处添加引号,如echo "$TTYA"
echo 'outside'
if [[ $$TTYA == 'ttyA11' ]]
$$
将扩展为正在运行的 shell 的 PID。因此,if 语句将始终为假。如果使用$TTYA
(单美元),该语句也将是错误的,因为设备名称前面TTYA
有一个。/dev/
then
echo 'inside'
chmod g+rw /dev/ttyA*
fi
剧本的逻辑很奇怪;看来您想要创建/dev/ttyA*
group-rw(如果/dev/ttyA11
存在)。但在那种情况下,会
if [ -e /dev/ttyA11 ] ; then
chmod g+rw /dev/ttyA*
fi
更有逻辑性?
答案2
尝试这个:
TTYA='ls /dev/ttyA11'
eval $TTYA
echo $TTYA
echo "outside"
if [ $TTYA == 'ttyA11' ]
then
echo "inside"
chmod g+rw /dev/ttyA*
fi