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

관련 정보