![Bash 스크립트에서 매개변수를 읽고 이를 awk 명령에 전달 [닫기]](https://linux55.com/image/142521/Bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%9D%BD%EA%B3%A0%20%EC%9D%B4%EB%A5%BC%20awk%20%EB%AA%85%EB%A0%B9%EC%97%90%20%EC%A0%84%EB%8B%AC%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
나는앗Bash 스크립트의 명령입니다. 파일 경로를 bash 스크립트에 매개변수로 전달하고 있는데 매개변수가 다음 위치에 있습니다.앗주문하다.
내 배쉬 파일mybash.sh암호:
#!/bin/bash
file="$1"
echo $file
awk 'BEGIN{FS=OFS=","} NF!=5{print "not enough fields"; exit} NR == 1 && ($1 != "nasme" || $2 != "designation" || $3 != "email" || $4 != "phone" || $5 != "group") {print "Wrong file headers"; exit}' $file
bash 파일을 실행하면:
배쉬 mybash.sh /home/file_path.csv
내 스크립트가 인쇄됩니다.$파일내가 길을 제시했지만 내앗명령이 이 내용을 읽지 못했습니다.$파일, 인쇄되기 때문에핵인자항상 0입니다. 그러나 위의 awk 명령은 터미널에서 직접 잘 작동합니다.
awk 'BEGIN{FS=OFS=","} NF!=5{print "not enough fields"; exit} NR == 1 && ($1 != "name" || $2 != "designation" || $3 != "email" || $4 != "phone" || $5 != "grsoup") {print "Wrong file headers"; exit}' /home/file_path.csv
답변1
나는 다음을 수행할 것입니다:
file="$1"
cat $file | awk 'BEGIN{FS=OFS=","} NF!=5{print "not enough fields"; exit} NR == 1 && ($1 != "nasme" || $2 != "designation" || $3 != "email" || $4 != "phone" || $5 != "group") {print "Wrong file headers"; exit}' > someoutputfile