Сценарий оболочки завершается неудачно при попытке установить дату - PullRequest
1 голос
/ 25 августа 2011

с базовым сценарием оболочки, таким как

USER=$1
CMD=$2

/usr/bin/sudo -u $USER $CMD

Я могу запустить

# ./script.sh root "/bin/echo 'apple pie'"
'apple pie'

Однако вместо этого пытаюсь:

#/script.sh root "/bin/date -s '2011-08-24 15:24:30'"
date: the argument `15:24:30\'' lacks a leading `+';
when using an option to specify date(s), any non-option
argument must be a format string beginning with `+'
Try `date --help' for more information.

Я могу повторить ошибку датывручную набрав

/bin/date -s \'2011-08-24 15:24:30\'
date: the argument `15:24:30\'' lacks a leading `+';
when using an option to specify date(s), any non-option
argument must be a format string beginning with `+'
Try `date --help' for more information.

Итак, моя проблема с использованием даты в этом сценарии заключается в том, что одиночные кавычки автоматически экранируются, и эта дата не нравится.Я могу изменить сценарий, чтобы он основывался на $ 1 $ 2 $ 3 «$ 4», но это устраняет универсальную природу этого сценария (который был упрощен для этого поста).

Любые способы сделать сценарий такого типаподдерживать дату без особого случая?

1 Ответ

3 голосов
/ 25 августа 2011

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

USER=$1
shift

/usr/bin/sudo -u $USER "$@"

"$ @" сохраняет кавычки, и вы должны вместо этого запустить скрипт:

./script.sh root /bin/echo 'apple pie'

Обратите внимание на отсутствие двойных кавычек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...