评论让我很困惑:bash shell脚本noob的自白

时间:2013-12-25 07:09:52

标签: bash shell comments

当我运行时:

#!/usr/bin/env bash

check_foo () {
    if [ -n "$foo" ];
    then
      echo "foo exists: $foo" 
      echo ""
    else 
      echo "no foo"
      echo ""
    fi
} 


echo "foo="
foo=
check_foo

echo "foo=#wtf"
foo=#wtf
check_foo

echo "foo=# wtf"
foo=# wtf
check_foo

echo "foo= #wtf"
foo= #wtf
check_foo

echo 'foo="wtf"'
foo="wtf"
check_foo

echo 'foo=#"wtf"'
foo=#"wtf"
check_foo

echo 'foo=# "wtf"'
foo=# "wtf"
check_foo

echo 'foo= # "wtf"'
foo= # "wtf"
check_foo

我得到了这个输出:

foo=
no foo

foo=#wtf
foo exists: #wtf

foo=# wtf
./wtf.sh: line 24: wtf: command not found
foo exists: #wtf

foo= #wtf
no foo

foo="wtf"
foo exists: wtf

foo=#"wtf"
foo exists: #wtf

foo=# "wtf"
./wtf.sh: line 40: wtf: command not found
foo exists: #wtf

foo= # "wtf"
no foo

我希望shell在'#'之后停止阅读。有人能解释一下吗

修改

我应该更仔细地表达我的问题。我理解正在发生什么。我不明白的是为什么你想要一个以这种方式工作的评论。这种行为有一些优势吗?或者它只是shell处理参数的方式的工件?

1 个答案:

答案 0 :(得分:1)

不,那不是真的。对于任何要成为注释的行,#需要在行开始时或在一行上只有一些空格后。

因此,例如,这不是shell中的注释和有效变量赋值:

s=#123
echo "$s"
#123