例
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 次 |
最近记录: |