windows上测试可以安装Git


deleteFile.sh脚本如下: #!/bin/bash
#shell脚本 保存路径的文本 #./deleteFile.sh ./picture.txt
#判断位置参数是否为1
if [ $# -ne 1 ];then
echo "Usage $0 filename"
exit
fi
#判断位置参数是否为文件
if [ ! -f $1 ];then
echo "the $1 is not a file"
exit
fi
#待删除文件路径的文本
filename=$1
echo "filename: $filename" >> info.txt
#计算待删除的文件数量(总行数)
NUM=sed -n '$=' $filename
echo "picture delete num: $NUM"
#逐行读取文件内容并删除对应路径的文件
success=0
for i in cat $filename
do
#成功信息重定向输出到info.txt
echo "delete success: $i" >> info.txt
rm -rf $i
success=expr $success + 1
done
echo "success delete num: $success"
执行./deleteFile.sh ./pictureWIn.txt命令后,权限不够,使用chmod命令对shell脚本赋予权限

修改pictureWIn.txt文件内容,发现只有放在最后一行的数据能被删除成功,前面的数据都删除失败
:<<! echo "./picture/a.jpg" rm -rf ./picture/a.jpg echo "./picture/b.jpg" rm -rf ./picture/b.jpg echo "./picture/c.jpg" rm -rf ./picture/c.jpg ! 直接执行三条删除语句,又是可以成功删除三张图片。
#----------------------------Test----------------------------------
#for循环读取文件内容并保存到picture数组
n=1
for i in cat $filename
do
picture[$n]=$i
#echo "picture[$n]: $i"
#rm -rf $picture[$n]
n=expr $n + 1
done
#while循环读取文件内容并保存到delete数组
i=1
while read line
do
delete[$i]="$line"
i=expr $i + 1
done < $filename
#遍历数组并删除文件
#for i in ${picture[*]}
#for i in seq $NUM
for ((i=NUM;i>=1;i--))
do
echo "delete success: ${picture[$i]}"
rm -rf ${picture[$i]}
done
尝试将文本内容读取后存放在数组,然后再删除,结果还是一样。
偶然间发现存放删除文件路径的文本是在windows下创建的,在linux下新建picture.txt文件,执行./deleteFile.sh ./picture.txt命令后,成功删除。
在Linux下和Windows下新建一个文本文件,注意只是新建,并不向文件中写入数据,此时两个文件是一样的。此时的文件(不管是何处新建的)放在Windows下和Linux下都是一样的。
但是一旦修改则不一样。在Linux下修改并保存,则换行是 \n ,在Windows下修改并保存,则换行是 \r \n 。
并且,一旦修改并保存,则该文件的换行是 \n 还是 \r \n 都是不会变了,除非人为的修改,只是修改保存其中的内容,换行的内容是不会变的。例如:换行是 \n 的文件放在Windows下增加一个换行(使用的编辑工具是Nodepad++),Windows下增加的换行还是 \n ;换行是 \r \n 的文件放在Linux下增加一个换行(使用的工具是vim),Linux下增加的换行还是 \r \n 。
来源:oschina
链接:https://my.oschina.net/u/3635618/blog/3161474