Вы всегда можете выполнять одну замену за другой в одном 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
(, чтобы избежать заполнения ), не является стандартным, но довольно распространенным.
В вашем скрипте есть ряд проблем, требующих внимания.
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
быть более логичным?
Попробуйте это:
TTYA='ls /dev/ttyA11'
eval $TTYA
echo $TTYA
echo "outside"
if [ $TTYA == 'ttyA11' ]
then
echo "inside"
chmod g+rw /dev/ttyA*
fi