Myscript.sh
입력으로 하나의 인수가 필요한 bash 쉘 스크립트가 있다고 가정합니다 .
하지만 나는 호출된 텍스트 파일의 내용이 text.txt
그 인수가 되기를 원합니다.
나는 이것을 시도했지만 작동하지 않습니다:
cat text.txt | ./Myscript.sh
이를 수행할 수 있는 방법이 있습니까?
답변1
./Myscript.sh "$(cat text.txt)"
답변2
파이프 출력을 쉘 스크립트 인수로 사용할 수 있습니다.
다음 방법을 시도해 보세요.
cat text.txt | xargs -I {} ./Myscript.sh {}
답변3
IMHO가 질문에 정확하게 대답하는 유일한 @bac0n을 완성하기 위해 파이프 인수를 스크립트 인수 목록 앞에 추가하는 짧은 라이너가 있습니다.
#!/bin/bash
declare -a A=("$@")
[[ -p /dev/stdin ]] && { \
mapfile -t -O ${#A[@]} A; set -- "${A[@]}"; \
}
echo "$@"
사용 예 :
$ ./script.sh arg1 arg2 arg3
> arg1 arg2 arg3
$ echo "piped1 piped2 piped3" | ./script.sh
> piped1 piped2 piped3
$ echo "piped1 piped2 piped3" | ./script.sh arg1 arg2 arg3
> piped1 piped2 piped3 arg1 arg2 arg3