4

我遇到了一个我认为应该很容易解决的问题,但对于我的生活,我无法弄清楚。可能是真的太晚了;没有把握。

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

这是当前代码:

如果 [ -n `find ./ `build_ext_names`` ];那么

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

4

2 回答 2

12

Michael Aaron Safyan的想法是正确的,但要解决眼前的问题,您可以使用更简单的$(command)构造而不是 ```command` `` 来进行命令替换。它允许更简单的嵌套:

if [ -n "$(find ./ "$(build_ext_names)")" ]; then
于 2011-07-07T06:41:54.807 回答
2

如果你把它分开,这会更容易:

function whateverItIsYouAreTryingToDo() {
   local ext_names=$(build_ext_names)
   local find_result=$(find ./ $ext_names)
   if [ -n "$find_result" ]  ; then
       # Contents of if...
   fi
}
于 2011-07-07T06:36:42.060 回答