Создание сценария Bash для изменения разрешений порта tty

Вы всегда можете выполнять одну замену за другой в одном sedвызове:

$ echo "Mon Apr 22 05:06:00 UTC 2019" | sed 's/ \{1,\}/,/g; s/,UTC,/,/'
Mon,Apr,22,05:06:00,2019

\{1,\}предназначен для случая, когда день дополняется до ширины 2 во входных данных, как в:

$ echo "Mon Apr  2 05:06:00 UTC 2019" | sed 's/ \{1,\}/,/g; s/,UTC,/,/'
Mon,Apr,2,05:06:00,2019

Обратите внимание, что если он должен обрабатывать вывод date, вы можете указать dateвыводить в том формате, в котором вы хотите начать с :

.
$ LC_ALL=C date -u +%a,%b,%-d,%T,%Y
Thu,Apr,25,11:47:25,2019

%-d(, чтобы избежать заполнения ), не является стандартным, но довольно распространенным.

0
12.10.2020, 14:02
2 ответа

В вашем скрипте есть ряд проблем, требующих внимания.

TTYA=$ ls /dev/ttyA11

Не уверен, что вы пытаетесь здесь сделать, но если вы это сделаете,TTYA=$(ls /dev/ttyA11)(обратите внимание на правильный синтаксис для назначения вывода команды переменной ), TTYAбудет содержать /dev/ttyA11, если это устройство существует.

echo $TTYA

Здесь, наверное, следует поставить кавычки, как вecho "$TTYA"

echo 'outside'
if [[ $$TTYA == 'ttyA11' ]]

$$расширится до PID запущенной оболочки. Таким образом, оператор if -всегда будет ложным. Если вы используете$TTYA(один доллар ), утверждение также будет ложным, потому что TTYAимеет /dev/перед именем устройства.

then
  echo 'inside' 
  chmod g+rw /dev/ttyA*
fi

Логика сценария странная; похоже, вы хотите сделать /dev/ttyA*группу -rw, если /dev/ttyA11существует.Но в таком случае будет ли

if [ -e  /dev/ttyA11 ] ; then
   chmod g+rw /dev/ttyA*
fi

быть более логичным?

1
18.03.2021, 22:58

Попробуйте это:

TTYA='ls /dev/ttyA11'

eval $TTYA

echo $TTYA

echo "outside"

if [ $TTYA == 'ttyA11' ]

then
  
 echo "inside"
  
 chmod g+rw /dev/ttyA*

fi
0
18.03.2021, 22:58

Теги

Похожие вопросы