简体   繁体   中英

Getting error ": command not found" when trying to run shell script

I have a script that I'm trying to run but I just get the error ": command not found" whenever I try to run it. Here's what I've tried to do to fix it:

  1. Made sure the hashbang is correct "#!/bin/bash"
  2. Run dos2unix on the file
  3. Run the script as scriptname.sh, ./scriptname.sh, and /bin/bash scriptname.sh
  4. chmod 755 scriptname.sh

I still am unable to run the script. Any help is much appreciated!

This is caused by carriage returns. Here's the excerpt from the bash tag wiki :

  1. Check whether your script or data has DOS style end-of-line characters

    • Use cat -v yourfile or echo "$yourvariable" | cat -v echo "$yourvariable" | cat -v .

      DOS carriage returns will show up as ^M after each line.

      If you find them, delete them using dos2unix (aka fromdos ) or tr -d '\\r'

Make sure to check all your data, and not just the script itself.

You can use these to delete unnecessary characters:

tr -cd '[:alnum:][:blank:][:punct:]\n' < script.sh > new_script.sh

Or

tr -cd '[:graph:][:blank:]\n' < script.sh > new_script.sh

Then try new_script.sh .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM