这是我的bash脚本。我想传递一个命令作为参数并运行它。
- 情况1(不起作用
- 案例2(运行良好
我如何使案例1(起作用?
function menu(){
echo "[$@]"
declare -a myarray
while IFS= read -r input; do
result_array+=( "$input" )
((count++))
printf "[$count] %sn" "${input[0]}"
done < <( $@ ) ########### case1) I want to use but it is not working.
## done < <( "find . -name '*.bak'" ) ########## case2) working well
}
## main
menu "find . -name '*.bak'"
我尝试了我所知道的每一个shell变量扩展,但最终都失败了。
done < <( $@ )
确保引用"$@"
。如果你不太清楚,那么它将进行glob扩展,*.bak
可以扩展到当前目录中所有备份文件的名称。
done < <("$@")
然后,您还希望将命令作为单独的参数而不是单个字符串传递。这很简单:去掉周围的引号。
menu find . -name '*.bak'