14 處理輸入

bash shell會將一些稱爲位置參數(positional parameter)的特殊變量分配給輸入到命令行中的全部參數。
這也包括shell所執行的腳本名稱。
位置參數變量是標準的數字: $0是程序名, $1是第一個參數,$2是第二個參數,依次類推,直到第九個參數$9。shell

scriptName=$(basename $0)bash

特殊變量$#含有腳本運行時攜帶的命令行參數的個數。ide

重要的是要注意,當命令行上沒有任何參數時, $#的值爲0,params變量的值也同樣,但${!#}變量會返回命令行用到的腳本名。命令行

$和$@變量能夠用來輕鬆訪問全部的參數。
$
變量會將命令行上提供的全部參數看成一個單詞保存。這個單詞包含了命令行中出現的每個參數值。
基本上$*變量會將這些參數視爲一個總體,而不是多個個體。ip

使用shift命令的時候要當心。若是某個參數被移出,它的值就被丟棄了,沒法再恢復。
shift nget

--查找選項的方法感受都不實用,shift移位以後參數就丟失了,徹底失去了查找的意義。string

getopt命令能夠接受一系列任意形式的命令行選項和參數,並自動將它們轉換成適當的格式。它的命令格式以下:
getopt optstring parametersit

getopts命令知道什麼時候中止處理選項,並將參數留給你處理。在getopts處理每一個選項時,它會將OPTIND環境變量值增一。io

read -p "提示輸入"
read -t 3 -p "提示輸入(超時3秒自動exit)"
read -s -p "提示輸入(前景色與背景色一致,隱藏輸入字符)"class

cat file | while read line
do
echo "$line"
done

while read linedoecho "$line"done < file