bash file returns unexpected token `$'do\r''
bash
Solution
Your script has been edited on a DOS or Windows based system and contains carriage-return characters that Linux/Unix does not like (that what `\r` is). You could use `dos2unix` to convert the carriage return line endings to the correct format; if you don't have `dos2unix` you might use `awk` like
awk '{ sub("\r$", ""); print }' git-copy.sh > git-copy2.sh
mv git-copy2.sh git-copy.sh
Problem
I found this script online and tried to use it: ``` #!/bin/sh # Target directory TARGET=$3 echo "Copying to $TARGET" for i in $(git diff --name-only $1 $2) do # First create the target directory, if it doesn't exist. mkdir -p "$TARGET/$(dirname $i)" # Then copy over the file. cp "$i" "$TARGET/$i" done echo "Done"; ``` I've validated the script online, and the script is okay. I've also tried to change it in various ways, but it doesn't work for me. I've also tried running something like: ``` #!/bin/sh # Target directory TARGET=$3 echo "Copying to $TARGET" for i in $(ls) do echo "text" done ``` And I still get the same error: ``` ./git-copy.sh: line 6: syntax error near unexpected token `$'do\r'' '/git-copy.sh: line 6: `do ``` Why is that?