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
까다로운 줄이 포함되어 있어 원치 않는 명령을 실행할 수도 있습니다.