sh - typeset -i2 var=2#0 在 bash/korn shell 中是什么意思?
问题描述
我在 korn shell 脚本中阅读了以下说明:
typeset -i2 var=2#0
我设法知道,typeset
您可以指定变量的类型,并且该参数-i2
描述了该变量是一个整数,要以基数 2(二进制)解释。但是,我仍然无法理解分配给变量 ( 2#0
) 的值是什么意思。
谷歌搜索我发现这样的指令variable#pattern
意味着模式的出现将从变量的前面被删除,但情况似乎并非如此......
编辑:似乎-in
语法特定于 korn shell ( ksh
)
解决方案
的-i[n]
语法typeset
特定于ksh
,在 中不可用bash
。在您的尝试中,代码-i2
表示以 2 为底的内容的输出,即作为二进制值。上ksh93
typeset -i2 var=15
echo "$var"
产生二进制值
2#1111
因此,使用该逻辑,您的原始代码会初始化var
in binary的值0
。如果您使用 as 进行初始化2#1111
,那么标志的含义会更有意义。您不能在此语法中使用非基数 2 数字,因为它只会引发语法错误,即像做这样的事情typeset -i2 var=2#15
永远不会奏效。
请注意,这在和shelltypeset
中都是过时的构造。Using提供了类似的选项等等。如果您在基数 2 中定义一个数字,您可以使用算术运算符ksh
bash
declare
bash
$((..))
var='2#1111'
echo "$(( var ))"
15
但是没有内置的方法可以在bash
不使用第三方工具的情况下从十进制中进行 base 2 转换bc
echo 'obase=2;15' | bc
1111
推荐阅读
- linux - 通过 bash 命令在某个块下方添加多个配置行
- spring - 无法在 Spring Boot 中自动装配对象列表
- react-native - 从底部选项卡导航中隐藏/删除图标或图标视图
- python - 将数据列表从 python 导入 csv 的问题
- pytorch - pytorch中'backward'的类型依赖
- sql-server - 有没有办法在 SQL Server 中拆分列以提取“-”之后的文本?
- java - 为 PDFBox 渲染注册其他字体
- java - 为什么在我的 HashSet 中一次又一次地添加第一个数字?HashSet 如何包含相同的值?
- printf - bash:如何总结读取命令中的间隔数?
- c# - 合并历史表记录asp.net mvc