Linux 在bash中循环遍历参数
我正在编写一个脚本,它接受一些文件作为参数,并为每个文件输出一条消息: 文件名的大小为大小KB 我正在努力研究如何在while循环中引用参数 这是我的密码Linux 在bash中循环遍历参数,linux,bash,shell,while-loop,parameters,Linux,Bash,Shell,While Loop,Parameters,我正在编写一个脚本,它接受一些文件作为参数,并为每个文件输出一条消息: 文件名的大小为大小KB 我正在努力研究如何在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 只需迭代值,而不是索引。注意,这是所有POSIX标准shell for i in "$@"; do
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
只需迭代值,而不是索引。注意,这是所有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
迭代所有参数的标准方法是
for i do
(for i;do
也为我所知的所有shell所接受。)不,如果省略要迭代的显式序列,这是一条捷径。它工作得很好,但我无法理解EOF doIt是一个任意字符串,用于标记here文档的结尾。以下每一行都用作read
命令的标准输入,直到找到一行只有EOF
。只要使用匹配的字符串对,您几乎可以使用任何字符串来代替EOF
。
read -r size dir <<< "$(du -s "$i")"