我在korn shell脚本中阅读了以下指令:
typeset -i2 var=2#0我设法知道,使用typeset,您可以指定变量的类型,参数-i2描述变量是要用基2(二进制)解释的整数。但是,我仍然无法理解分配给变量(2#0)的值是什么意思。
我在谷歌上发现,像variable#pattern这样的指令意味着模式的出现将从变量的前面删除,但情况似乎并非如此.
编辑:似乎-in语法是特定于korn (ksh)
发布于 2019-06-21 11:20:42
typeset的-i[n]语法是特定于ksh的,在bash中不可用。在您的尝试中,代码-i2意味着表示基2内容中的输出,即二进制值。论ksh93
typeset -i2 var=15
echo "$var"以二进制形式生成值。
2#1111因此,使用该逻辑,您的原始代码在二进制var中初始化了一个值。如果您用2#1111这样的东西初始化,那么这个标志意味着什么就更有意义了。您不能在这种语法中使用非基数2数字,因为它只会引发语法错误,例如,执行typeset -i2 var=2#15之类的操作将永远无法工作。
请注意,typeset在ksh和bash shell中都是过时的构造。使用declare提供类似的选项等等。在bash中,如果在基2中定义了一个数字,则可以为相同的$((..))使用算术运算符。
var='2#1111'
echo "$(( var ))"
15但是,在不使用第三方工具(如bash )的情况下,没有内置的方法来完成从十进制到小数点的基2转换。
echo 'obase=2;15' | bc
1111https://stackoverflow.com/questions/56701609
复制相似问题