PShell运行脚本遇到 syntax error near unexpected token 原因及解决办法

175 阅读1分钟

在查看资料清除docker的大小,得到一段脚本,可清理docker日志

docker_log_files=$(find /var/lib/docker/containers/ -name '*-json.log')
docker_logs_size=$(find /var/lib/docker/containers/ -name '*-json.log' | xargs du -sc | tail -1 |awk '{print $1,"K"}')
free -h &&  sync && echo 1 > /proc/sys/vm/drop_caches   #释放系统缓存
echo -e "\033[32mThe docker log total size is $docker_logs_size\033[0m"
for log in $docker_log_files
do
echo "Now is cleaning docker log,docker core logs:$log"
cat /dev/null > $log
systemctl reload docker  #加载docker服务,不影响已经docker
done
free -h

保存为clean_docker_log_space.log文件,./clean_docker_log_space.log运行,出现syntax error near unexpected token报错。

用notepad++打开文件,视图->显示符号->显示所有符号,然后就看到代码中所有的回车换行都是windows的CR LF。而Linux和windows下的回车换行符是不兼容的。在notepad++中,编辑->文档格式转换->转为UNIX(LF),即可将所有的CR LF,转换为LF。然后再运行此shell脚本,即可正常运行了。