带有注释的Shell脚本,创建变量时找不到命令

时间:2011-10-26 17:14:07

标签: 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

2 个答案:

答案 0 :(得分:6)

这是csh的怪癖。 (停止使用csh!)csh将使用“标准shell”(引自csh联机帮助页)处理不以“#”开头的脚本。当脚本以“#”开头时,csh会对其进行解析。您的脚本无效csh。

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

#!/bin/sh

答案 1 :(得分:2)

尝试这样的事情

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

这适用于我的系统(Ubuntu 11.04,64bit)。如果这不起作用,那么您的文件中可能会有一些隐藏的特殊字符。