stdoutの結果を実行する

stdoutの結果を実行する

シェル コマンドの結果を別のコマンドの引数として使用するのではなく、実際に実行する方法はありますか?

たとえば、フォルダー内のすべての実行可能ファイルに対して '--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

またはxargs;

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

答え4

シェル出力をシェル入力として再評価するには、 を使用しますeval

eval "$(your command here)"

関連情報