'\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

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
David Miller

David Miller

Executive Financial & Market Analyst

David Miller brings 15 years of experience in global economics, personal finance strategy, and market dynamics. He specializes in turning complex economic trends into actionable insights for everyday readers.

Share this article
Twitter Facebook Pinterest