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)"

관련 정보