例
for FILE in $DIR/*
do
if(<is last File>)
doSomethingSpecial($FILE)
else
doSomethingRegular($FILE)
fi
done
Run Code Online (Sandbox Code Playgroud)
要求<is last file>检查当前文件是否是数组中的最后一个文件?
是否有一个简单的内置检查,而不是自己检查阵列的长度?
cda*_*rke 17
要求检查当前文件是否是数组中的最后一个文件?
首先,您没有使用数组.如果你那么这很容易:
declare -a files
files=($DIR/*)
pos=$(( ${#files[*]} - 1 ))
last=${files[$pos]}
for FILE in "${files[@]}"
do
if [[ $FILE == $last ]]
then
echo "$FILE is the last"
break
else
echo "$FILE"
fi
done
Run Code Online (Sandbox Code Playgroud)
我知道无法告诉您正在处理for循环中列表的最后一个元素.但是,您可以使用数组,迭代除最后一个元素之外的所有元素,然后处理循环外的最后一个元素:
files=($DIR/*)
for file in "${files[@]::${#files[@]}-1}" ; do
doSomethingRegular "$file"
done
doSomethingSpecial "${files[@]: -1:1}"
Run Code Online (Sandbox Code Playgroud)
扩展${files[@]:offset:length}计算元素的所有元素offset(从空白开始)length.${#files[@]}-1是数组中元素的数量减去1.
${files[@]: -1:1}计算到最后一个元素 - 从结尾开始的-1,长度为1.空格是必要的,因为:-处理方式不同: -.
| 归档时间: |
|
| 查看次数: |
16254 次 |
| 最近记录: |