本來跑的好好得一個文件,在windows下修改了,然后移植到linux就報(bào)錯了。
找了一圈以下是解決方案:
這種情況發(fā)生的原因是因?yàn)槟闼幚淼奈募Q行符是dos格式的"\r\n"
可以使用cat -v 文件名 來查看換行符是否是,如果是上述的,則行結(jié)尾會是^m
需要轉(zhuǎn)換成linux/unix格式的"\n"
具體轉(zhuǎn)換辦法就是轉(zhuǎn)換換行符
可以用sed命令處理一下文件,命令如下:
sed 's/\r//' 原文件 >轉(zhuǎn)換后文件
1.png
2.png
檢查shell語法
[root@iZm5ed2begvgw01qrymv8yZ Data]# bash -n task_start.sh
task_start.sh: line 4: syntax error near unexpected token `$'do\r''
'ask_start.sh: line 4: `do
[root@iZm5ed2begvgw01qrymv8yZ Data]#
在我執(zhí)行發(fā)現(xiàn)代碼沒有了
[root@iZm5ed2begvgw01qrymv8yZ Data]# sed 's/\r//g' task_start.sh > task_start.sh
[root@iZm5ed2begvgw01qrymv8yZ Data]#
[root@iZm5ed2begvgw01qrymv8yZ Data]#
[root@iZm5ed2begvgw01qrymv8yZ Data]#
[root@iZm5ed2begvgw01qrymv8yZ Data]#
[root@iZm5ed2begvgw01qrymv8yZ Data]# cat task_start.sh -v
[root@iZm5ed2begvgw01qrymv8yZ Data]# cat task_start.sh
原因
···
解決
[root@iZm5ed2begvgw01qrymv8yZ Data]# sed 's/\r//g' task_start.sh > task_start2.sh
[root@iZm5ed2begvgw01qrymv8yZ Data]#
[root@iZm5ed2begvgw01qrymv8yZ Data]#
[root@iZm5ed2begvgw01qrymv8yZ Data]# cat task_start2.sh
#!/usr/bin/env bash
task_url=("http://hs.oeynet.com/task.php" "http://hs.oeynet.com/task.php")
for n in `seq 10`
do
for task in ${task_url[*]}
do
curl $task >> /www/server/logs/task.log
done
sleep 6
done
[root@iZm5ed2begvgw01qrymv8yZ Data]# cat task_start2.sh -v