Вывод команды «какая» в переменную не работает

Я только новичок в 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:~$
1
задан 7 August 2021 в 11:23

1 ответ

Переменная принимает только значение, отправленное через STDOUT, или выходной поток . Поскольку curl не может быть найден, вы видите сообщение об ошибке, отправленное через STDERR или поток ошибок. Если вы хотите сохранить сообщение об ошибке в переменной в случае ошибки., Сделайте следующее:

OUTPUT = "$ (which curl 2> & 1)"

Это направляет все данные из STDERR в STDOUT. 2 - дескриптор файла для STDERR, а 1 - дескриптор файла для STDOUT.

3
ответ дан 20 August 2021 в 10:29

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

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