執行標準輸出結果

執行標準輸出結果

有沒有辦法實際執行 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)"

相關內容