小编pat*_*lan的帖子

找到 Bash 算法可以处理的最大数字?

我怎样才能让我的脚本为自己确定最大的数字?

我查看了我的环境变量,我发现这两个看起来很有希望:

~# 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 算术中最大数字是多少的结论吗?必须有更好的方法,以编程方式。有什么建议?

bash arithmetic

14
推荐指数
2
解决办法
897
查看次数

给定一些 ASCII 数字,使用 `printf` 输出字符

我一直在尝试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)

bash printf

8
推荐指数
1
解决办法
450
查看次数

标签 统计

bash ×2

arithmetic ×1

printf ×1