И вы не должны использовать [119845]-F' '[119846], [119847]awk[119848] использовать пробелы как отдельное поле по умолчанию.[119413].
В общем, вам не нужно экранировать и цитировать что-либо. Безопасный способ написать так:
FILE="/usr/local/var/www/htdocs/${FILENAME}!3.zip"
UNZIPPEDFOLDER="$("$UNZIP" "$FILE" | "$GREP" -m1 'creating:' | "$CUT" -d' ' -f5-)"
echo "$UNZIPPEDFOLDER"
Передача пароля sudo в сценарии совершенно бессмысленна. Вместо этого добавьте правило sudo , добавляющее определенную команду, которую необходимо выполнить с помощью NOPASSWD
тэгов . Следите за тем, чтобы правило NOPASSWD
, специфичное для команды, следовало за любым общим правилом.
saeid ALL = (ALL:ALL) ALL
saeid ALL = (root) NOPASSWD: service lightdm start
Но это, вероятно, все равно не полезно. lightdm start
запускает запрос на вход в систему, но это необходимо только в том случае, если вы хотите разрешить другим пользователям входить в систему графически. Вам это не нужно, если вы хотите только начать сеанс GUI. Вместо этого вызовите startx
для запуска сеанса GUI из сеанса текстового режима. Это не требует каких-либо дополнительных привилегий.
Возможно, потребуется явно указать диспетчер окон или среду рабочего стола, поскольку startx
может не выбрать тот же тип сеанса по умолчанию, что и lightdm.
startx -- gnome-session
-121--57339- В общем случае не нужно ничего упускать и цитировать . Безопасный способ записи:
FILE="/usr/local/var/www/htdocs/${FILENAME}!3.zip"
UNZIPPEDFOLDER="$("$UNZIP" "$FILE" | "$GREP" -m1 'creating:' | "$CUT" -d' ' -f5-)"
echo "$UNZIPPEDFOLDER"
-121--166122- !
- это символ расширения журнала команд, поэтому его необходимо цитировать в командной строке, когда расширение журнала включено. Его не нужно цитировать внутри сценария.
На главной странице:
При использовании средств расширения истории команд (см. ниже HISTORY EXPANSION) символ расширения истории, обычно!, должен быть процитирован для предотвращения расширения истории.
и
Неинтерактивные оболочки не выполняют расширение истории по умолчанию.
для получения более подробной информации см. man bash
, поиск QUOTING
и HISTORY EXPANSION
.