'\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 "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]$
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.
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.
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