我在korn shell脚本中阅读了以下说明:
typeset -i2 var=2#0
我设法知道可以使用typeset
指定变量的类型,并且参数-i2
描述该变量是要以基数2(二进制)解释的整数。
但是,我仍然不明白分配给变量(2#0
)的值是什么意思。
谷歌搜索,我发现像variable#pattern
这样的指令意味着模式的出现将从变量的开头删除,但事实并非如此……
编辑:似乎-in
语法特定于korn shell(ksh
)
答案 0 :(得分:2)
-i[n]
的{{1}}语法特定于typeset
,在ksh
中不可用。在您的尝试中,代码bash
表示以2为底的内容表示输出,即表示为二进制值。在-i2
ksh93
生成二进制值
typeset -i2 var=15
echo "$var"
因此,按照这种逻辑,您的原始代码会在二进制2#1111
中初始化var
的值。如果您使用0
进行了初始化,那么该标志的含义就更有意义了。您不能将非基数2与此语法一起使用,因为它只会引发语法错误,即执行2#1111
之类的操作将永远无法进行。
请注意,typeset -i2 var=2#15
和typeset
壳中的ksh
都是过时的构造。使用bash
提供了类似的选项以及更多选项。在declare
中,如果您以2为底定义数字,则可以对同一bash
使用算术运算符
$((..))
但是如果没有使用var='2#1111'
echo "$(( var ))"
15
之类的第三方工具,就没有内置的方法可以从bash
中的十进制进行以2为基的转换
bc