필터링을 위해 awk 명령을 사용하여 bash에 매개변수를 전달합니다.

필터링을 위해 awk 명령을 사용하여 bash에 매개변수를 전달합니다.

아래의 기본 스크립트를 개선할 수 있는 방법에 대해 도움을 요청하고 싶습니다.

따라서 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'

관련 정보