具体的には、スクリプトの「回数指定して ping」という箇所に名前をつけることを考える。
$ cat --number test.sh 1 #!/bin/dash 2 set -eux; 3 4 _ping_to_host_with_count_function () { 5 ping \ 6 -c "${1}" \ 7 "${2}" \ 8 ; 9 } 10 11 _ping_to_host_with_count_function_function () { 12 _ping_to_host_with_count_function \ 13 ${@} \ 14 ; 15 } 16 17 18 alias _ping_to_host_with_count_alias='ping \ 19 -c \ 20 ' 21 22 alias _ping_to_host_with_count_alias_alias='_ping_to_host_with_count_alias' 23 24 _ping_to_host_with_count_function \ 25 4 \ 26 example.com \ 27 ; 28 29 _ping_to_host_with_count_alias \ 30 4 \ 31 example.com \ 32 ; 33 34 _ping_to_host_with_count_function_function \ 35 4 \ 36 example.com \ 37 ; 38 39 _ping_to_host_with_count_alias_alias \ 40 4 \ 41 example.com \ 42 ; 43 44 exit 0;
このシェルスクリプトを実行すると以下のようになる。function で呼び出した場合には _ping_to_host_with_count_function がログに残るが、alias で呼び出した場合にはそれがないことがわかる。また、関数を更に関数で説明するケースではその説明が全てログに残るのに対し、aliasを更にaliasで説明するケースでは全くログが残らない事がわかる。
$ sh test.sh + alias _ping_to_host_with_count_alias=ping \ -c \ + alias _ping_to_host_with_count_alias_alias=_ping_to_host_with_count_alias + _ping_to_host_with_count_function 4 example.com + ping -c 4 example.com PING example.com (93.184.216.34) 56(84) bytes of data. 64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=1 ttl=52 time=104 ms 64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=2 ttl=52 time=104 ms 64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=3 ttl=52 time=104 ms 64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=4 ttl=52 time=104 ms --- example.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3005ms rtt min/avg/max/mdev = 104.726/104.841/104.947/0.082 ms + ping -c 4 example.com PING example.com (93.184.216.34) 56(84) bytes of data. 64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=1 ttl=52 time=104 ms 64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=2 ttl=52 time=104 ms 64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=3 ttl=52 time=104 ms 64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=4 ttl=52 time=104 ms --- example.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3005ms rtt min/avg/max/mdev = 104.777/104.815/104.863/0.231 ms + _ping_to_host_with_count_function_function 4 example.com + _ping_to_host_with_count_function 4 example.com + ping -c 4 example.com PING example.com (93.184.216.34) 56(84) bytes of data. 64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=1 ttl=52 time=104 ms 64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=2 ttl=52 time=104 ms 64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=3 ttl=52 time=104 ms 64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=4 ttl=52 time=104 ms --- example.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 104.741/104.801/104.861/0.399 ms + ping -c 4 example.com PING example.com (93.184.216.34) 56(84) bytes of data. 64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=1 ttl=52 time=104 ms 64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=2 ttl=52 time=104 ms 64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=3 ttl=52 time=104 ms 64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=4 ttl=52 time=104 ms --- example.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3003ms rtt min/avg/max/mdev = 104.754/104.803/104.862/0.046 ms + exit 0