通过参数在bash

问题描述:

循环我写一个接受文件作为参数,并为每个文件的一些数量的脚本,输出一条消息关于如何引用while循环中的参数通过参数在bash

这是我的代码

i=1 
while [ $i -le $# ] 
do 
echo "The size of $(du -s $1 | cut -f2) is $(du -s $1 | cut -f1) kilobytes" 
i=$((i+1)) 
done 

只是想迭代OVE r值,而不是索引。注意这是所有POSIX标准的shell。

for i in "[email protected]"; do 
    # Run du once, no need for cut 
    read -r size dir <<EOF 
$(du -s "$i") 
EOF 
    echo "The size of $dir is $size kilobytes" 
done 

您可以bash与此字符串替换的here文档:

read -r size dir <<< "$(du -s "$i")" 
+0

的规范方式来遍历所有的论点是'为我do'('因为我; do'也被接受通过我知道的所有shell。) – rici

+0

不,这是一个捷径,如果你省略了显式的序列迭代。 – chepner

+0

它完美的工作,但我不明白EOF做什么 – Ahmad