쉘 함수의 linux du 명령은 한 줄의 출력만 생성합니다.

쉘 함수의 linux du 명령은 한 줄의 출력만 생성합니다.

du파일 사용법을 표시하기 위해 명령을 사용했습니다 .

$ sudo du -hsx /* | sort -rh | head -n 40
16G     /home
5.3G    /var
2.6G    /usr
840M    /run
...

그리고 반복적인 작업으로부터 나를 구하기 위한 함수를 작성하고 싶습니다.

show_disk() {
    sudo du -hsx "$1" | sort -rh | head -n 40
}

하지만 이 기능을 실행하면 다음 du과 같은 한 줄의 출력만 표시됩니다.

$ show_disk() /*
0   /bin

제가 보기에는 쉘 함수에서 명령이 다르게 동작하는 것 같습니다 du. 여기서 잘못된 점은 무엇입니까? 어떤 도움이라도 주시면 감사하겠습니다.

답변1

$1첫 번째 주장이다. 앱이 아니라 와일드카드를 확장하는 셸이므로 *파일/디렉토리가 하나만 일치하거나 일치하지 않는 한 단일 인수가 아닙니다.

"$@"모든 인수를 허용하려면 스크립트에서 큰따옴표를 사용해야 합니다 . ( $*공백이 포함된 파일 이름으로 인해 중단될 수 있으므로 사용하지 마십시오 .)

관련 정보