0

我正在为考试学习 shell 脚本,在我们的教师书中,他在一个地方写了以下示例:

# This script expects a folder path as an argument.
cd $1
if [ $? -ne 0 ]; then echo "Folder not found"; exit 1; fi

然而,在另一个例子中,他写道:

# This script expects one argument
if [ "$#" -ne 1 ]; then echo "Missing Parameter"; exit 1; fi

现在,我什么时候必须将经过测试的参数放在双引号中的方括号内,什么时候不需要?

我的意思是,美元?在这种情况下代表一个数字。但是,此示例中的 $# 也表示数字而不是字符串(尽管一切都是字符串)。但是为什么 $# 双引号和 $? 不是?

4

2 回答 2

2

没有区别,因为 Bash 保证两者都是数字。

如果变量可能是字符串,可能带有控制字符或空格,则有必要引用。

于 2012-08-17T11:04:25.957 回答
0

他们的意思是一样的。$values 代表变量,将用作引号内外的变量。

于 2012-08-17T10:57:06.593 回答