![필터링을 위해 awk 명령을 사용하여 bash에 매개변수를 전달합니다.](https://linux55.com/image/97506/%ED%95%84%ED%84%B0%EB%A7%81%EC%9D%84%20%EC%9C%84%ED%95%B4%20awk%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20bash%EC%97%90%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%A0%84%EB%8B%AC%ED%95%A9%EB%8B%88%EB%8B%A4..png)
아래의 기본 스크립트를 개선할 수 있는 방법에 대해 도움을 요청하고 싶습니다.
따라서 bash에 인수를 전달할 수 있지만 awk 명령을 더 유연하게 만들 수 있습니까?
명령에 오류가 발생했습니다 df -h
. 2줄의 파일 시스템이 1개 표시됩니다(1줄만 있어야 함).
$6
그러면 매개변수 번호(및 ) $5
가 변경되었기 때문에 스크립트가 올바른 매개변수를 표시하지 않습니다 .
견본:
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/test/test2/test3 1.1G 100M 1G 1% /test
/dev/test/test2/test3/test4
1.1G 100M 1G 1% /tst2
$ cat myscript.sh
#!bin/bash
df -h "$@" | awk '{print $6,"=",$5}' | sed -n '1!p'
$ ./myscript.sh /test /tst2
내 출력은
/test=1%
=/tst2
하지만 그래야 해
/test=1%
/tst2=1%
답변1
df
그냥 사용하면 출력 후처리 에 대해 걱정할 필요가 없습니다 .
df -P
이렇게 하면 1개의 파일 시스템에 대한 출력이 여러 줄에 걸쳐 있지 않게 됩니다.
따라서 최종 스크립트는 다음과 같습니다.
df -h -P "$@" | awk '{ print $6,"=",$5}' | sed -n '1!p'