tty ポート権限を変更する Bash スクリプトの作成

tty ポート権限を変更する Bash スクリプトの作成

システムの起動時に実行され、複数の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

関連情報