Shell-Script

在萬用字元中循環作為腳本的輸入

  • August 27, 2014

有時我想在許多文件上使用我的腳本。

我將其用於以下目的:

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"

引用自:https://unix.stackexchange.com/questions/152484