我正在研究bash脚本。 我从网上获得了以下示例脚本。
#!/bin/bash
str="test"
if [ x$str == x"test" ]; then
echo "hello!"
fi
第五行(x$str
和x"test"
)的x是多少?
“x
”具有特殊含义吗?
答案 0 :(得分:9)
没有特殊含义,但如果$str
为空,则为
if [ $str == "test" ]
会导致将任何内容替换为测试,就像这样
if [ == "test" ]
这将是语法错误。在前面添加X会解决这个问题,但是会像这样引用它
if [ "$str" == "test" ]
是一种更具可读性和可理解性的方法。
答案 1 :(得分:2)
确保示例中表达式的左侧不为空。如果未设置str
,则条件将为[ == "test" ]
,这将导致错误。
您可以将变量放在双引号字符中,而不是使用单个字母使其不为空,并完全跳过x
([ "$str" == "test" ]
)。