首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在bash/中,排版-i2 var=2#0是什么意思?

在bash/中,排版-i2 var=2#0是什么意思?
EN

Stack Overflow用户
提问于 2019-06-21 10:27:03
回答 1查看 184关注 0票数 2

我在korn shell脚本中阅读了以下指令:

代码语言:javascript
复制
typeset -i2 var=2#0

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

我在谷歌上发现,像variable#pattern这样的指令意味着模式的出现将从变量的前面删除,但情况似乎并非如此.

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-21 11:20:42

typeset-i[n]语法是特定于ksh的,在bash中不可用。在您的尝试中,代码-i2意味着表示基2内容中的输出,即二进制值。论ksh93

代码语言:javascript
复制
typeset -i2 var=15
echo "$var"

以二进制形式生成值。

代码语言:javascript
复制
2#1111

因此,使用该逻辑,您的原始代码在二进制var中初始化了一个值。如果您用2#1111这样的东西初始化,那么这个标志意味着什么就更有意义了。您不能在这种语法中使用非基数2数字,因为它只会引发语法错误,例如,执行typeset -i2 var=2#15之类的操作将永远无法工作。

请注意,typesetkshbash shell中都是过时的构造。使用declare提供类似的选项等等。在bash中,如果在基2中定义了一个数字,则可以为相同的$((..))使用算术运算符。

代码语言:javascript
复制
var='2#1111'
echo "$(( var ))"
15

但是,在不使用第三方工具(如bash )的情况下,没有内置的方法来完成从十进制到小数点的基2转换。

代码语言:javascript
复制
echo 'obase=2;15' | bc
1111
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56701609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档