쉘 스크립트의 문자열 결과를 쉘 명령 세트로 실행합니다.

쉘 스크립트의 문자열 결과를 쉘 명령 세트로 실행합니다.

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

관련 정보