fsck.vfat не смог исправить USB

Если вы сохранили команду в строковой переменной, то для ее запуска вам нужно

eval "$cmd"

Выполнение $cmd работает только если команда не содержит специальные символы оболочки, кроме пробелов. Сохранение команды в строковой переменной вообще плохая идея. Было бы лучше определить функцию:

cmd () {
  ls -l
}

Тогда вы сможете запустить ее с помощью всего лишь cmd.

Ваша самая непосредственная проблема заключается в том, что вы еще больше искажаете вывод команды, потому что используете подстановку команды без кавычек. Вам нужно использовать двойные кавычки для замены переменных и команд. С cmd, определенной как функция:

echo "`cmd`"

Чтобы избежать неожиданностей со сложными командами, используйте долларовые скобки вместо обратных кавычек:

echo "$(cmd)"

См. Почему мой сценарий оболочки задыхается от пробелов или других специальных символов ? для пояснений.

0
13.04.2017, 15:13
0 ответов

Теги

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