Я ищу функцию, которая вернет 1, если существует команда оболочки, и 0, иначе я знаю, что есть команда which
, которая возвращает путь к команде, если она существует. В руководстве также говорится, что эта команда должна иметь возвращаемое значение, но попытка установить a = `which some_command.bin`
не помещает никакого значения в a
. Я знаю, что всегда могу использовать which
, а затем анализировать результаты, я просто ищу более чистое решение.
как узнать, существует ли команда оболочки в cshell
Ответы (1)
Возвращаемое значение для команды оболочки обычно не извлекается таким образом. Обычно вам нужно запустить команду, после чего специальная переменная среды $?
даст вам возвращаемое значение.
См. следующую стенограмму для tcsh
:
pax$ which qq ; echo $?
qq: Command not found.
1
pax$ which ls ; echo $?
/bin/ls
0
Просто поместите любую команду, которую вы хотите проверить, там, где у меня есть ls
выше.
person
paxdiablo
schedule
01.02.2011
Я не хочу запускать команду оболочки, просто хочу знать, существует ли она или нет
- person n00b programmer; 01.02.2011
может я вас не понял, я запустил который и $? и это сработало :) Спасибо!!
- person n00b programmer; 01.02.2011
@ n00b, он не выполняет команду, он выполняет
which
с командой в качестве параметра. Я просто показываю, как вы можете получить возвращаемое значение из which
, чтобы вы могли выяснить, существует ли команда или нет.
- person paxdiablo; 01.02.2011