'\r': command not found [duplicate]

echo "Select your option:" echo "1. Change ip address" echo "2. Add route" echo "3. Reboot" echo "4. Exit" read A case $A in 1) echo "Add Ip address" read IP echo "Add Netmask" read Netid echo "Add name of interface" read Interface ifconfig ${Interface} ${IP}/${Netid} if [ $? -ne 0 ];then echo "Ip address not configured" fi ;; 2) echo "Add Destination" read dst echo "Add Netmask" read Netid echo "Add Gateway" read gw route add $dst mask $Netid gw $gw if [ $? -ne 0 ];then echo "Route not added" fi ;; 3) reboot ;; 4) echo "Bye" exit 0 ;; default) echo "Wrong selection" exit 1 esac 

Error:

[b104@b104 Downloads]$ ./NetworkUtility.sh ./NetworkUtility.sh: line 1: $'\r': command not found Select your option: 1. Change ip address 2. Add route 3. Reboot 4. Exit 1 ': not a valid identifier 7: read: `A ./NetworkUtility.sh: line 8: $'\r': command not found ./NetworkUtility.sh: line 9: syntax error near unexpected token `newline' '/NetworkUtility.sh: line 9: `case $A in [b104@b104 Downloads]$ 
4

3 Answers

It seems that you have Windows style line endings (\r\n) - you need to change them to unix style (\n). If you have dos2unix installed you could use it. You could also do it using sed or awk.

4

Its End of Line(EOL) conversion issue when script is written in windows using some editors like notepad, notepad++(tested).

Sed , tr may solve the issue in case of you just need to run script, however if you are developing shell script its become annoying each time first convert using, sed/tr command then run your script.

Notepad++ has an option to convert END OF LINE CONVERSION(EOL). How to do that: go to Edit > EOL Conversion > select Unix/OSX

Here you go, save script file and run it.

Here is screenshot of the same

1

The error happens, because shell doesn't understand DOS/Windows-like line endings and it expects LF instead of CRLF.

You'll need to first configure your editor to use Unix-like line endings or use dos2unix command to change it automatically, e.g.

dos2unix ./NetworkUtility.sh 

Read more details at: '\r': command not found.

If you're using Vagrant, check: Windows CRLF to Unix LF Issues in Vagrant

0

You Might Also Like