명령 자체와 모든 인수를 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
연결합니다 .cat
cat
df -h