Shell脚本:意外的文件结束

时间:2015-09-27 12:24:02

标签: linux shell

这是我的shell脚本:

if [ $# != 2 ] ; then
    echo "$0 <SSID> <passphrase>"
    exit
fi
wpa_cli -iwlan0 disconnect
wpa_cli -iwlan0 remove_network all
wpa_cli -iwlan0 add_network
wpa_cli -iwlan0 set_network 0 mode 0
wpa_cli -iwlan0 set_network 0 ssid \"$1\"
wpa_cli -iwlan0 set_network 0 auth_alg OPEN
wpa_cli -iwlan0 set_network 0 key_mgmt WPA-PSK
wpa_cli -iwlan0 set_network 0 proto RSN
wpa_cli -iwlan0 set_network 0 psk \"$2\"
wpa_cli -iwlan0 set_network 0 scan_ssid 1
wpa_cli -iwlan0 select_network 0
wpa_cli -iwlan0 enable_network 0
wpa_cli -iwlan0 reassociate
wpa_cli -iwlan0 status

当我运行它时,我收到以下错误:(有18行代码)

wpacli_connect_wpa2.sh: line 19: syntax error: unexpected end of file

如果我手动运行这些命令,一切正常。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

我可以通过复制粘贴脚本并将其保存在DOS模式下来重现您的问题,以便它具有CRLF行结尾。 然后,我得到与你完全相同的错误:

  

第19行:语法错误:意外的文件结尾

要解决此问题,请修改行结尾,方法是在脚本上运行dos2unix,或者tr

tr -d '\r' < script.sh > cleaned.sh && mv cleaned.sh script.sh

而且,我建议在最顶层插入这一行:

#!/bin/sh

所有shell脚本都应该有这样的行(称为 shebang )。