Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

bash file returns unexpected token `$'do\r''

Tags:

bash

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?

like image 643
kfirba Avatar asked Nov 27 '14 18:11

kfirba


Video Answer


1 Answers

Another possible solution using unix text editor vi:

open file in vi edit with vi filename.sh command;

type in vi :set ff=unix command;

save file with :wq

It will save the file with unix line endings.

like image 118
Bfcm Avatar answered Oct 05 '22 08:10

Bfcm