在bash / korn shell中,什么类型的-i2 var = 2#0是什么意思?

时间:2019-06-21 10:27:03

标签: sh ksh

我在korn shell脚本中阅读了以下说明:

typeset -i2 var=2#0

我设法知道可以使用typeset指定变量的类型,并且参数-i2描述该变量是要以基数2(二进制)解释的整数。 但是,我仍然不明白分配给变量(2#0)的值是什么意思。

谷歌搜索,我发现像variable#pattern这样的指令意味着模式的出现将从变量的开头删除,但事实并非如此……

编辑:似乎-in语法特定于korn shell(ksh

1 个答案:

答案 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#15typeset壳中的ksh都是过时的构造。使用bash提供了类似的选项以及更多选项。在declare中,如果您以2为底定义数字,则可以对同一bash使用算术运算符

$((..))

但是如果没有使用var='2#1111' echo "$(( var ))" 15 之类的第三方工具,就没有内置的方法可以从bash中的十进制进行以2为基的转换

bc