typeset -i2 var=2#0 在 bash/korn shell 中意味着什么?
What typeset -i2 var=2#0 means in bash/korn shell?
我在 korn shell 脚本中阅读了以下说明:
typeset -i2 var=2#0
我设法知道使用 typeset
可以指定变量的类型,并且参数 -i2
描述变量是一个整数,以基数 2(二进制)解释。
但是,我还是不明白赋给变量的值(2#0
)是什么意思。
谷歌搜索我发现像variable#pattern
这样的指令意味着模式的出现将从变量的前面删除,但情况似乎并非如此...
编辑:似乎 -in
语法特定于 korn shell (ksh
)
typeset
的 -i[n]
语法特定于 ksh
,在 bash
中不可用。在您的尝试中,代码 -i2
表示以 base 2 内容表示输出,即作为二进制值。在 ksh93
typeset -i2 var=15
echo "$var"
产生二进制值
2#1111
因此,根据该逻辑,您的原始代码以二进制 0
初始化 var
的值。如果您使用 2#1111
之类的东西进行初始化,那么标志的含义会更有意义。您不能使用此语法使用非基数 2 的数字,因为它只会引发语法错误,即 typeset -i2 var=2#15
之类的操作将永远行不通。
请注意,typeset
在 ksh
和 bash
shell 中都是过时的结构。使用 declare
提供类似的选项和更多。在 bash
中,您可以对相同的 $((..))
使用算术运算符,如果您在基数 2
中定义一个数字
var='2#1111'
echo "$(( var ))"
15
但是没有 built-in 方法可以在不使用像 bc
这样的第三方工具的情况下从 bash
中的十进制进行以 2 为底的转换
echo 'obase=2;15' | bc
1111
我在 korn shell 脚本中阅读了以下说明:
typeset -i2 var=2#0
我设法知道使用 typeset
可以指定变量的类型,并且参数 -i2
描述变量是一个整数,以基数 2(二进制)解释。
但是,我还是不明白赋给变量的值(2#0
)是什么意思。
谷歌搜索我发现像variable#pattern
这样的指令意味着模式的出现将从变量的前面删除,但情况似乎并非如此...
编辑:似乎 -in
语法特定于 korn shell (ksh
)
typeset
的 -i[n]
语法特定于 ksh
,在 bash
中不可用。在您的尝试中,代码 -i2
表示以 base 2 内容表示输出,即作为二进制值。在 ksh93
typeset -i2 var=15
echo "$var"
产生二进制值
2#1111
因此,根据该逻辑,您的原始代码以二进制 0
初始化 var
的值。如果您使用 2#1111
之类的东西进行初始化,那么标志的含义会更有意义。您不能使用此语法使用非基数 2 的数字,因为它只会引发语法错误,即 typeset -i2 var=2#15
之类的操作将永远行不通。
请注意,typeset
在 ksh
和 bash
shell 中都是过时的结构。使用 declare
提供类似的选项和更多。在 bash
中,您可以对相同的 $((..))
使用算术运算符,如果您在基数 2
var='2#1111'
echo "$(( var ))"
15
但是没有 built-in 方法可以在不使用像 bc
bash
中的十进制进行以 2 为底的转换
echo 'obase=2;15' | bc
1111