BASH: оператор if выполняет команду и функцию - PullRequest
4 голосов
/ 07 июля 2011

Я столкнулся с проблемой, в которой, я думаю, должно быть легко решить, но я не могу понять это ради жизни. Может быть, уже очень поздно; не уверен.

Итак, у меня есть скрипт оболочки, и у меня есть оператор if, который мне нужно выполнить. Проблема в том, что у меня есть функция внутри этого bash-скрипта, которую я использую для фактической сборки части этой команды find внутри оператора if. Я хочу знать, как я могу сделать оба, не получая ошибку [: too many arguments.

Вот текущий код:

if [ -n `find ./ `build_ext_names`` ];then

Это все, что мне действительно нужно опубликовать. Мне нужно выяснить, как запустить эту build_ext_names внутри этой команды поиска, которая, в свою очередь, находится внутри ifstatement

Ответы [ 2 ]

12 голосов
/ 07 июля 2011

Майкл Аарон Сафьян имеет правильную идею, но для решения насущной проблемы вы можете просто использовать более простую конструкцию $(command) вместо `` `command`` `для подстановки команд . Это позволяет намного проще вложения:

if [ -n "$(find ./ "$(build_ext_names)")" ]; then
2 голосов
/ 07 июля 2011

Это проще, если вы разделите его:

function whateverItIsYouAreTryingToDo() {
   local ext_names=$(build_ext_names)
   local find_result=$(find ./ $ext_names)
   if [ -n "$find_result" ]  ; then
       # Contents of if...
   fi
}
...