![쉘 스크립트의 문자열 결과를 쉘 명령 세트로 실행합니다.](https://linux55.com/image/21228/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98%20%EB%AC%B8%EC%9E%90%EC%97%B4%20%EA%B2%B0%EA%B3%BC%EB%A5%BC%20%EC%89%98%20%EB%AA%85%EB%A0%B9%20%EC%84%B8%ED%8A%B8%EB%A1%9C%20%EC%8B%A4%ED%96%89%ED%95%A9%EB%8B%88%EB%8B%A4..png)
my에서 문자열 결과를 생성하고 shell script
이를 shell command
.
예를 들어 file_a
:
[email protected]
[email protected]
스크립트:
awk '{print "mail -s \"welcome\"", $1}' file_a
결과:
mail -s "welcome" [email protected]
mail -s "welcome" [email protected]
그래서 결과를 일련의 쉘 명령으로 실행하고 싶습니다.
답변1
eval 명령을 보고 싶습니다.
eval $(awk '{print "mail -s \"welcome\"", $1}' file_a)
편집하다: 당신 말이 맞아요 @manatwork --eval은 제가 증명했듯이 여러 줄에서는 실제로 작동하지 않습니다. 나는 Navid가 묻는 질문에 대답하려고 노력하고 있지만 실제로 왜 그가 for 루프를 사용하지 않는지 묻는 것을 두려워해서는 안됩니다. 즉:
for m in $(<file_a); do mail -s welcome $m
답변2
여러 가지 방법이 있습니다:
- awk의 출력을 파일에 쓰고 파일을 실행 가능하게 만든 다음 실행합니다.
- awk 스크립트에서 system() 함수 사용:
답변3
Bash에서 직접 명령을 읽고 실행합니다.
for i in `<file_a`; do mail -s "welcome" $i; done
답변4
결과를 àwk
다음으로 파이프할 수 있습니다 bash
.
awk '{print "mail -s \"welcome\"", $1}' file_a | bash
그러나 첫 번째 명령의 출력에 주의하세요. 여기에는 file_a
까다로운 줄이 포함되어 있어 원치 않는 명령을 실행할 수도 있습니다.