Я только новичок в bash скрипт. Я попытался сохранить вывод команды "which" в переменной и распечатать его, но переменная ничего не показывает. Это код, который я пробовал:
#!/bin/bash
OUTPUT="$(which curl)"
echo "${OUTPUT}"
Вывод:
user@user:~$ bash new.sh
user@user:~$
Также это работает, когда я запускаю его в терминале.
user@user:~$ OUTPUT="$(which curl)"
echo "${OUTPUT}"
curl not found
user@user:~$
Но дело в том, что он работает с другими командами.
#!/bin/bash
OUTPUT="$(date)"
echo "${OUTPUT}"
Вывод:
user@user:~$ bash new.sh
Sat 07 Aug 2021 01:41:37 PM +0545
user@user:~$
Переменная принимает только значение, отправленное через STDOUT, или выходной поток . Поскольку curl не может быть найден, вы видите сообщение об ошибке, отправленное через STDERR или поток ошибок. Если вы хотите сохранить сообщение об ошибке в переменной в случае ошибки., Сделайте следующее:
OUTPUT = "$ (which curl 2> & 1)"
Это направляет все данные из STDERR в STDOUT. 2 - дескриптор файла для STDERR, а 1 - дескриптор файла для STDOUT.