xargs
가 호출합니다 작동하지 않으면 배쉬 printf
은 -v
옵션
-v var assign the output to shell variable VAR rather than
display it on the standard output
을 가지고 오늘 발견 /usr/bin/printf
(또는 해당 바이너리가 시스템에 설치된 곳이면 어디에서나). bash의 내장 기능을 호출하지 않습니다. 그리고 내장 된 (또는 스크립트 또는 유사한 것을 소싱하는 것만) 쉘의 환경을 수정할 수 있습니다.
bash의 내장 함수를 호출 할 수있는 경우에도 예제의 xargs
은 하위 셀에서 실행됩니다. 서브 쉘은 어쨌든 부모의 환경을 수정할 수 없습니다. 그래서 당신이하려는 것은 효과가 없습니다.
샘플을 올바르게 이해하면 몇 가지 옵션이 표시됩니다. 샘플 데이터 :
$ cat input
abc other stuff
def ignored
cba more stuff
간단한 변수 (약간 까다로운 당신이 원하는 정확히 무엇에 따라) :
$ var=($(grep a input))
$ echo "${var[0]}"-"${var[1]}"
abc-other
: 당신이 배열에서 개별 단어를 원하는 경우 배열로
$ var=$(grep a input)
$ echo $var
abc other stuff cba more stuff
$ echo "$var"
abc other stuff
cba more stuff
또는 각 배열 요소의 전체 줄을 원하는 경우 :
$ IFS=$'\n' var=($(grep a input)) ; unset IFS
$ echo "${var[0]}"-"${var[1]}"
abc other stuff-cba more stuff
출처
2012-06-12 20:10:16
Mat
그렇지가 있다는입니다 파이프 라인이 끝날 때 외부 실행 파일 ('/ usr/bin/printf') 만 허용하는 것이 xargs의 주장입니다. 또한 예제는'-v'를 제거하지 않으면 결과가 없습니다. –
@DennisWilliamson 네 말이 맞아. 고마워. 고정. –