기능과 관련하여 bash의 명령 순서를 이해합니다.

기능과 관련하여 bash의 명령 순서를 이해합니다.

명령 자체와 모든 인수를 f인쇄한 다음 변수에 저장하는 함수를 정의하는 예가 있습니다 .blah$@

# f () { echo blah; "$@"; }
# df -h | f
blah
# df -h | f cat
blah
Filesystem                                              Size  Used Avail Use% Mounted on
rootfs                                                   37G   36G     0 100% /
udev                                                     10M     0   10M   0% /dev
tmpfs                                                   304M  308K  303M   1% /run
/dev/disk/by-uuid/466fbdef-029c-4625-8bb2-cde3acd77e55   37G   36G     0 100% /
tmpfs                                                   5.0M     0  5.0M   0% /run/lock
tmpfs                                                   2.1G     0  2.1G   0% /run/shm
/dev/sda2                                                74G  7.0G   63G  11% /home
/dev/sr1                                                5.6M  5.6M     0 100% /media
# 

f cat오른쪽 파이프 부분은 어떻게 작동하나요? 표준 출력은 어떻게 변수 df -h로 끝나나요 ? 왜 변수의 내용을 인쇄 $@해야 합니까 ?cat$@

답변1

존재하다:

df -h | f

df -h출력을 표준 입력으로 리디렉션 한 f다음 f인수 없이 호출하면 $@결과는 비어 있습니다.

반면에:

df -h | f cat

df -h출력을 표준 입력으로 리디렉션한 다음 f하나 f의 인수로 호출합니다 cat. "$@"이는 . 표준 입력(예: 출력)을 표준 출력에 f연결합니다 .catcatdf -h

관련 정보