시스템 시작 시 실행되고 여러 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