#!/bin/sh
for repo in repoA, repoB, repoC;
do
echo Cloning $repo.
done
当我执行此操作(sh myscript.sh
)时,我得到以下内容:
myscript.sh: line 2: syntax error near unexpected token `$'\r''
'yscript.sh: line 2: `for repo in repoA repoB repoC;
想法?
答案 0 :(得分:3)
Windows在每行末尾使用两个字符:'\r'
和'\n'
。 Unix只使用'\n'
。大概是你在记事本中编辑它并在cygwin中运行它,这就是你得到这个错误的原因。
下载Notepad++编辑器,其中包含Edit / EOL Conversion
下的unix样式行结尾选项。
答案 1 :(得分:0)
您的脚本可能是在Windows机器上编写的,包含DOS换行符 CR LF 而不是Unix换行符, LF
所以你只需要转换换行符。
你可以使用各种工具来做到这一点,但我的偏好是 dos2unix
要在 CentOS,Fedora 或 RHEL 上安装它,请执行:
sudo yum install dos2unix
在 Ubuntu或Debian 上安装 dos2unix :
sudo apt-get install tofrodos
sudo ln -s /usr/bin/fromdos /usr/bin/dos2unix
现在要实际进行转换:
dos2unix your_script.sh
然后运行脚本
sh your_script.sh
答案 2 :(得分:-4)
你忘记了分号:
#!/bin/sh
for repo in repoA repoB repoC;
do
echo Cloning $repo.
done
请注意,repoA,repoB和repoC在此上下文中被视为变量。