2011-10-26 81 views
3

我有以下脚本,它的工作原理:与评论shell脚本,创建变量时找不到命令

x=10 
echo $x 
now=$(date +'%Y-%m-%d') 
echo $now 

然而,当我在开始添加注释行:

# comment 
x=10 
echo $x 
now=$(date +'%Y-%m-%d') 
echo $now 

我得到以下内容:

x=10: command not found 
x: undefined variable 

为什么添加评论导致脚本失败?

,如果我这样做它的工作原理:

x=10 
echo $x 
now=$(date +'%Y-%m-%d') 
# comment here 
echo $now 
+1

该脚本是否有'#!'shebang作为其第一行,还是只是裸指令? –

+0

不,它不。 –

+0

您是否可能在文件中使用DOS风格的行尾? – derobert

回答

6

这是csh的一个怪癖。 (停止使用csh!)csh将使用“标准shell”(从csh联机帮助页引用)来处理不以'#'开头的脚本。脚本以'#'开头时,csh会解析它。你的脚本不是有效的csh。

您应该添加一个shebang行来避免这种类型的问题。也就是说,使第一线:

 
#!/bin/sh 
+0

什么是csh以及如何停止使用它? –

+0

@JohnB:你可以通过运行'chsh'来改变你的shell。什么是csh? csh是邪恶的。 “man csh”可能会给出较少的偏见描述。 – derobert

+0

太棒了!谢谢!增加了'#!/ bin/sh',它工作。 –

2

尝试这样的事情

#!/bin/sh 
# 
x=10 
echo $x 
now=$(date +'%Y-%m-%d') 
echo $now 

此工程在我的系统(Ubuntu的11.04,64位)。如果这不起作用,那么你的文件中可能有一些隐藏的特殊字符。

+0

我没有'#!/ bin/sh' –