システムの起動時に実行され、複数のttyAポートの権限を変更するBashスクリプトを生成しようとしています。私はこの問題を解決する方法がわからず、助けを得ることができるかどうか疑問に思います。
私の現在のコードは次のとおりです。
#!/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' ]]
$$
実行中のシェルのPIDに展開されます。したがって、if文は常にfalseです。 (シングルドル)$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