#!/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;
想法?
Windows在每行的末尾使用两个字符:'r'
和'n'
。Unix只使用'n'
。假设你是在记事本中编辑它,并在cygwin中运行它,这就是为什么你得到这个错误。
下载notepad++编辑器,它在Edit / EOL Conversion
下有一个unix风格的行结尾选项。
您的脚本可能是在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
你忘了一个分号:
#!/bin/sh
for repo in repoA repoB repoC;
do
echo Cloning $repo.
done
注意repoA, repoB和repoC在此上下文中被视为变量。