循环遍历bash

时间:2017-10-14 14:14:22

标签: linux bash shell while-loop parameters

我正在编写一个脚本,接受一些文件作为参数,并为每个文件输出一条消息:

FILENAME的大小为SIZE千字节

我正在努力研究如何在while循环中引用参数

这是我的代码

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

1 个答案:

答案 0 :(得分:1)

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

for i in "$@"; 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字符串替换here文档:

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