예를 들어
find /usr/lib -maxdepth 1 -type l -iname "*libblas*"|xargs -I{} echo "{} =>" $(realpath {})
다음과 같이 출력하고 싶습니다.
/usr/lib/libblas.so.3gf=>/usr/lib/libblas/libblas.so.3gf.0
/usr/lib/libblas.so=>/usr/lib/libblas/libblas.so.3gf.0
/usr/lib/libblas.a=>/usr/lib/libblas/libblas.a
$()
스크립트가 실제로 실행되기 전에 in 값이 확장되므로 이는 작동하지 않습니다 .
이 결과를 얻을 수 있는 방법이 있나요? Bash에 루프가 없나요?
답변1
이 방법을 시도해 볼 수 있습니다
find /usr/lib -maxdepth 1 -type l -iname "*lib*" -print \
| xargs -P1 -I{} -- sh -c 'echo -n " {} => " && realpath "{}"'
답변2
find /usr/lib -maxdepth 1 -type l -iname "*libblas*"|xargs -I{} sh -c 'echo "{} =>" $(realpath {})'
기본적으로 서브쉘을 시작해야 합니다. FWIW 실제 경로가 무엇인지 모르겠습니다. 별칭이나 함수인 경우 하위 쉘은 아마도 bash여야 합니다.