我怎样才能让我的脚本为自己确定最大的数字?
我查看了我的环境变量,我发现这两个看起来很有希望:
~# declare -p BASH_VERSINFO HOSTTYPE
declare -ar BASH_VERSINFO=([0]="5" [1]="0" [2]="11" [3]="1" [4]="release" [5]="x86_64-slackware-linux-gnu")
declare -- HOSTTYPE="x86_64"
Run Code Online (Sandbox Code Playgroud)
...但我真的可以相信解析这些,以便得出关于 Bash 算术中最大数字是多少的结论吗?必须有更好的方法,以编程方式。有什么建议?
我一直在尝试printf
输出一些字符,给定它们的 ASCII 数字(十六进制)......像这样:
#!/bin/bash
hexchars () { printf '\x%s' $@ ;}
hexchars 48 65 6c 6c 6f
Expected output:
Hello
Run Code Online (Sandbox Code Playgroud)
出于某种原因,这不起作用。有任何想法吗?
编辑:
根据 Isaac 提供的答案(接受的答案),我最终得到了这个函数:
chr () { local var ; printf -v var '\\x%x' $@ ; printf "$var" ;}
Run Code Online (Sandbox Code Playgroud)
请注意,为了通过避免使用子shell来提高速度,我稍微改写了他的答案。
Result:
~# chr 0x48 0x65 0x6c 0x6c 0x6f
Hello
~# chr 72 101 108 108 111
Hello
~# chr {32..126}
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}
Run Code Online (Sandbox Code Playgroud)
我猜这个chr
函数的反函数应该是一个像...
asc () { printf '%d\n' "'$1" ;}
asc A
65
chr 65
A …
Run Code Online (Sandbox Code Playgroud)