执行标准输出结果

执行标准输出结果

有没有办法实际执行 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

珀尔巴什

ls -1 | perl -pe 's/\n/ --version;\n/g' | bash

或者参数

ls -1 | xargs -I {} bash {} --version;

答案4

要将 shell 输出重新评估为 shell 输入,请使用eval.

eval "$(your command here)"

相关内容