shell变量中的问号(?)

时间:2013-12-10 14:08:28

标签: string shell variables

我想使用这个名字的变量:topMiddleOligocenetoUpperEocene?

我怎样才能在shell脚本中(即使用问号)?我试过了:

{topMiddleOligocenetoUpperEocene?}="something"

但是在我的shell脚本中没有理解它(myfile.sh在第一行使用#!/ bin / sh)。

任何提示都将受到赞赏,提前谢谢。

3 个答案:

答案 0 :(得分:4)

不能。这不是bash中的有效标识符。请参阅http://www.gnu.org/software/bash/manual/bashref.html#Definitions

name的定义
  

名称

     
    

单词由字母,数字和下划线组成,以字母或下划线开头。名称用作shell变量和函数名称。也称为标识符。

  

答案 1 :(得分:3)

不,你不能在unix shell变量名中使用?。事实上,许多其他特殊字符,例如句号,逗号,?是不允许的。

这是shell变量名的正则表达式:

[a-zA-Z_][a-zA-Z0-9_]*

答案 2 :(得分:0)

?不能成为变量名的一部分,如:%=和更多的特殊含义的shell。在这种情况下,它将尝试查找以您的变量名称和1个字符(任何字符)开头的文件。除非你有一个可以由hte环境执行的,否则它将返回一个错误。

ksh:
{topMiddleOligocenetoUpperEocene?}="something"
sh: {topMiddleOligocenetoUpperEocene?}=something:  not found.

bash
{topMiddleOligocenetoUpperEocene?}="something"
bash: {topMiddleOligocenetoUpperEocene?}=something: command not found