問題描述:
執行shell腳本時報錯 No such file or directory,而目錄確實是存在的
執行shell腳本時報錯 syntax error near unexpected token `elif'mysql
[root@host1 scripts]# bash mysql_full_backup.sh
: No such file or directory1: !/bin/sh
: No such file or directory14: /data/mysqldata/backup/mysql_full
: No such file or directory15: /data/mysqldata/backup/mysql_full
: No such file or directory16: /data/mysqldata/backup/mysql_full
/mysqldump: No such file or directoryocal/mysql/bin
: No such file or directoryz7: /data/mysqldata/backup/mysql_full
: No such file or directory18: /data/mysqldata/backup/mysql_full
du: cannot access ‘/data/mysqldata/backup/mysql_full\r/dbfullbak_2016-11-03.sql.gz\r’: No such file or directory
: No such file or directory19: /data/mysqldata/backup/mysql_full
: No such file or directory21: /data/mysqldata/backup/mysql_full
mysql_full_backup.sh: line 26: syntax error near unexpected token elif'<br/>'ysql_full_backup.sh: line 26:
elif [-f $tfile] ; thensql
解決方法shell
這通常都是文件編碼問題致使的,Linux下的文件編碼要是ASCII。vim
Linux下能夠使用file,查看文件編碼
file mysql_full_backup.sh
mysql_full_backup.sh: ASCII textbash
方法一:
1)在Windows下使用軟件轉換編碼:
利用一些編輯器如UltraEdit或EditPlus等工具先將腳本編碼轉換,再放到Linux中執行。
轉換方式以下(UltraEdit):File-->Conversions-->DOS->UNIX便可。編輯器
2)在Windows下上傳時轉換編碼
使用rz上傳時,選擇轉換編碼ide
方法二:
1)用vim打開該sh文件,輸入:
[plain]
:set ff
回車,顯示fileformat=dos,從新設置下文件格式:
[plain]
:set ff=unix
保存退出:
[plain]
:wq
再執行,就能夠了工具
2)文件的編碼要是ASCII text
file mysql_full_backup.sh
mysql_full_backup.sh: ASCII text編碼