我遇到了一个我认为应该很容易解决的问题,但对于我的生活,我无法弄明白。可能是因为它真的很晚了;不确定。
所以我有一个shell脚本,我有一个需要运行的if语句。问题是我在这个bash脚本中有一个函数,我用来在if语句中实际构建这个find命令的一部分。我想知道如何做到这两点,而不会收到错误[: too many arguments
。
这是当前的代码:
if [ -n `find ./ `build_ext_names`` ];then
这就是我真正需要发布的内容。我需要弄清楚如何在find命令中运行build_ext_names
,而命令又在if语句中运行
答案 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
}