как узнать, существует ли команда оболочки в cshell

Я ищу функцию, которая вернет 1, если существует команда оболочки, и 0, иначе я знаю, что есть команда which, которая возвращает путь к команде, если она существует. В руководстве также говорится, что эта команда должна иметь возвращаемое значение, но попытка установить a = `which some_command.bin` не помещает никакого значения в a. Я знаю, что всегда могу использовать which, а затем анализировать результаты, я просто ищу более чистое решение.


person n00b programmer    schedule 01.02.2011    source источник


Ответы (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
comment
Я не хочу запускать команду оболочки, просто хочу знать, существует ли она или нет - person n00b programmer; 01.02.2011
comment
может я вас не понял, я запустил который и $? и это сработало :) Спасибо!! - person n00b programmer; 01.02.2011
comment
@ n00b, он не выполняет команду, он выполняет which с командой в качестве параметра. Я просто показываю, как вы можете получить возвращаемое значение из which, чтобы вы могли выяснить, существует ли команда или нет. - person paxdiablo; 01.02.2011