Как получить команду, не найденную ответом в сценариях в человечности 16.04

Я запускаю со сценариев в человечности. Его очень легкая и хорошая вещь сделать. В моих сценариях оболочки я должен выполнить небольшое количество команды Linux, чтобы изменить каталог или удалить файлы или файлы копии или любую другую команду. Таким образом, я просто задавался вопросом, это возможное получить команду, не найденную уведомлением в сценариях так, чтобы, если какая-либо команда перестала работать когда-либо, мы могли показать сообщение об ошибке на терминале пользователю.

Я искал немного об этом на Google и узнал, что использование ниже мы можем считать терминальный ответ:

fooVar=$(ls)
echo "Response: $fooVar"

Таким образом выше я работаю ls управляйте так на терминале, он похож на что-то:

Response:
folder1
folder2
file1
file2

Но если я делаю что-то как

fooVar=$(lsv)
echo "Response: $fooVar"

Это дает мне ошибку lsv command not found который в порядке потому что lsv не команда, но эта строка должна прибыть как это

Response: lsv command not found

Это возможное, или я вхожу в неправильный путь. Также, как мы можем поместить если условие для этой ошибки. Помогите.Спасибо

1
задан 31 January 2017 в 12:09

2 ответа

Ошибка,

команда lsv, не найденная

, отправляют к stderror, тогда как нормальный вывод является sendt к stdout. Необходимо будет перенаправить stderror к stdout:

$ fooVar=$(lsv 2>&1)
$ echo "Response: $fooVar"
Response: -bash: lsv: command not found

Это почти, что Вы хотите, execpt для -bash:

, Stdout имеет filedescriptor 1, и stderr имеет дескриптор 2. Таким образом, то, что я говорю, 'отправляют stderr в то же место как stdout'. Вы могли использовать что-то подобное для помещения вывода или ошибок в файлы:

ls > outfile 2> errorfile

поместит нормальный вывод в файл, названный 'outfile' и возможными ошибками в 'errfile'.

ls >> outfile 2>> errorfile

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

2
ответ дан 7 December 2019 в 12:36

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

fooVar="lsv"
echo -n "Response "; echo `$fooVar`
1
ответ дан 7 December 2019 в 12:36

Другие вопросы по тегам:

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