Shell-Script
在萬用字元中循環作為腳本的輸入
有時我想在許多文件上使用我的腳本。
我將其用於以下目的:
for etminput in $1 do #process done
但這只是給出了第一個輸入。如何對每個萬用字元匹配進行處理?
如果你想循環遍歷腳本的所有參數,在任何類似 Bourne 的 shell 中,它是:
for i do something with "$i" done
你也可以這樣做:
for i in "$@"; do something with "$i" done
但它更長且不那麼便攜(儘管適用於現代外殼)。
注意:
for i; do something with "$i" done
既不是 Bourne 也不是 POSIX,所以應該避免(儘管它適用於許多 shell)
為了完整起見,在非 Bourne shell 中:
csh/tcsh
@ i = 1 while ($i <= $#argv) something with $argv[$i]:q @ i++ end
您不能使用:
foreach i ($argv:q) something with $i:q end
因為這會跳過空參數
遙控/安卡
for (i) something with $i
(
rc
通常是貝殼應該是什麼樣的)。它是
for (i=$*) something with $i
(es 是類固醇上的 rc)。
魚
for i in $argv something with $i end
zsh
雖然它會接受 Bourne 語法,但它也支持較短的語法,例如:
for i ("$@") something with "$i"