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