标签归档:shell
bash 查找数组中是否存在某个元素
realfilesarr=(123 456 789) function contains() { local n=$# local value=${!n} for ((i=1;i < $#;i++)) { if [ "${!i}" == "${value}" ]; then echo "y" return 0 fi } echo "n" return 1 } if [ $(contains "${realfilesarr[@]}" "123") == "n" ]; then echo "不存在"; fi if [ $contains "${realfilesarr[@]}" "123") == "y" ]; then echo "存在"; fi
while read line无法读取最后一行的问题
while read line读取文件时,如果文件最后一行之后没有换行符\n,则read读取最后一行时遇到文件结束符EOF,循环终止,虽然此时$line内存有最后一行,但程序已经没有机会再处理此行,因此可以通过以下代码来解决此问题:
while read line || [[ -n ${line} ]]; do
…
done
这样当文件没有结束时不会测试-n $line,当遇到文件结束时,仍然可以通过测试$line是否有内容来进行继续处理。
http://ju.outofmemory.cn/entry/86710
shell脚本遍历文件每行
cat filename | while read line
do
echo '###' $line
done