bash脚本中的字符串比较

时间:2011-11-05 13:27:42

标签: bash if-statement

我正在研究bash脚本。 我从网上获得了以下示例脚本。

#!/bin/bash

str="test"

if [ x$str == x"test" ]; then
  echo "hello!"
fi

第五行(x$strx"test")的x是多少? “x”具有特殊含义吗?

2 个答案:

答案 0 :(得分:9)

没有特殊含义,但如果$str为空,则为

if [ $str == "test" ]

会导致将任何内容替换为测试,就像这样

if [  == "test" ]

这将是语法错误。在前面添加X会解决这个问题,但是会像这样引用它

if [ "$str" == "test" ]

是一种更具可读性和可理解性的方法。

答案 1 :(得分:2)

确保示例中表达式的左侧不为空。如果未设置str,则条件将为[ == "test" ],这将导致错误。

您可以将变量放在双引号字符中,而不是使用单个字母使其不为空,并完全跳过x[ "$str" == "test" ])。