有没有办法实际执行 shell 命令的结果,而不是将它们用作另一个命令的参数?
例如,我想对文件夹中的所有可执行文件运行“--version”,如下所示:
ls /usr/bin/ | --version
我找到了一种使用 find/exec 的方法:
find /usr/ -name valgrind -exec {} --version \;
但我想用 ls 来做。我已经搜索了超过 45 分钟,但找不到任何帮助。
答案1
尝试这样做:
printf '%s\n' /usr/bin/* | while IFS= read -r cmd; do "$cmd" --version; done
答案2
如果您尝试使用某个选项执行某个目录中的每个可执行文件--version
,请尝试此单行代码(使用 /usr/bin 作为示例目录):
for f in /usr/bin/*; do [ -x "$f" ] && $f --version; done
答案3
答案4
要将 shell 输出重新评估为 shell 输入,请使用eval
.
eval "$(your command here)"