Bash script prints "Command Not Found" on empty lines
bash, debian, linux
Solution
Make sure your first line is:
#!/bin/bash
Enter your path to bash if it is not `/bin/bash`
Try running:
dos2unix script.sh
That wil convert line endings, etc from Windows to unix format. i.e. it strips \r (CR) from line endings to change them from `\r\n (CR+LF)` to `\n (LF)`.
More details about the `dos2unix` command (man page)
Another way to tell if your file is in dos/Win format:
cat scriptname.sh | sed 's/\r/<CR>/'
The output will look something like this:
#!/bin/sh<CR>
<CR>
echo Hello World<CR>
<CR>
This will output the entire file text with `<CR>` displayed for each `\r` character in the file.
Problem
Every time I run a script using `bash scriptname.sh` from the command line in Debian, I get `Command Not found` and then the result of the script. The script works but there is always a `Command Not Found` statement printed on screen for each empty line. Each blank line is resulting in a command not found. I am running the script from the `/var` folder. Here is the script: ``` #!/bin/bash echo Hello World ``` I run it by typing the following: ``` bash testscript.sh ``` Why would this occur?