目的の開始行から目的の行数を効率的に出力する優れたユーティリティスクリプトを見つけました。私はそれをmid.bakと名付けました、そしてそれはここの投稿に基づいています>> http://www.fastechws.com/tricks/unix/head_tail_mid_files.php
使用法:mid.bak startline numlines filename
$ cat mid.bak
#!/bin/sh
echo "Positional parameter count: $#"
tail -n +$1 $3 | head -n $2
echo "Parameter three is: $3"
ケースI:上記の通常の使用法に従って、位置パラメータ「$3」が見つかります。
$ mid.bak 3 2 file.txt
Positional parameter count: 3
This line 3 in file.txt
This line 4 in file.txt
Parameter three is: file.txt
ケースIIおよびIII:「$3」は不思議なことに存在しません。
$ mid.bak 3 2 < file.txt
Positional parameter count: 2
This line 3 in file.txt
This line 4 in file.txt
Parameter three is:
$ cat file.txt | mid.bak 3 2
Positional parameter count: 2
This line 3 in file.txt
This line 4 in file.txt
Parameter three is:
私の質問:上記の位置パラメータ$ 3は、通常の$ 1、$ 2 ..ケースIの参照によってスクリプトで使用できます。それでは、なぜそれがカウント "$#"に含まれず、ケースIIとIIIでエコーアウトされないのでしょうか。