BASH:if语句执行命令和功能

时间:2011-07-07 06:32:56

标签: bash if-statement bash-function

我遇到了一个我认为应该很容易解决的问题,但对于我的生活,我无法弄明白。可能是因为它真的很晚了;不确定。

所以我有一个shell脚本,我有一个需要运行的if语句。问题是我在这个bash脚本中有一个函数,我用来在if语句中实际构建这个find命令的一部分。我想知道如何做到这两点,而不会收到错误[: too many arguments

这是当前的代码:

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

这就是我真正需要发布的内容。我需要弄清楚如何在find命令中运行build_ext_names,而命令又在if语句中运行

2 个答案:

答案 0 :(得分:12)

Michael Aaron Safyan有正确的想法,但要解决眼前的问题,你可以使用更简单的$(command)结构而不是```````来command substitution。它允许更简单的嵌套:

if [ -n "$(find ./ "$(build_ext_names)")" ]; then

答案 1 :(得分:2)

如果将其拆分,这会更容易:

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