표준 출력 결과 실행

표준 출력 결과 실행

쉘 명령의 결과를 다른 명령의 인수로 사용하는 대신 실제로 실행하는 방법이 있습니까?

예를 들어 다음과 같이 폴더의 모든 실행 파일에 대해 "--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

셸 출력을 셸 입력으로 다시 평가하려면 eval.

eval "$(your command here)"

관련 정보