linux - 在 bash 中编辑一个字符的 ASCII 值

标签 linux bash ascii

我正在尝试在 bash 中更新字符串数组的每个字符的 ASCII 值,我想将 2 添加到现有字符的 ASCII 值中。

例子:

declare -a x =("j" "a" "f" "a" "r")

我想更新 ASCII 值,将现有值增加 2,这样“j”将变为“l”​​

我找不到任何处理 ASCII 值的东西 打印 f '%d' "'$char"

谁能帮帮我?

而且当我尝试将一个数组复制到另一个数组时它也不起作用 请注意,我正在使用

declare -a temp=("${x[@]}")

有什么问题吗?

最佳答案

您可以先使用 printf 将整数转换为八进制转义序列(如 \123),然后使用 printf 格式字符串生成字符,从而将整数转换为 char:

#!/bin/bash
char="j"
printf -v num %d "'$char"
(( num += 2 ))
printf -v newchar \\$(printf '%03o' "$num")
echo "$newchar"

这仅适用于 ASCII。

关于linux - 在 bash 中编辑一个字符的 ASCII 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20481162/

相关文章:

Linux Red Hat Bash 是目录错误,试图在 Red Hat VI 中将一个文件值与另一个文件值相除

linux - 如何在 Linux 中复制多个文件的开头?

bash - 使用 bash 在文件的每一行中添加方括号

php - 转义正则表达式换行符

linux - FastCGI with perl - 在共享 Linux 虚拟主机上

linux - autotools 中的 automake 错误消息

bash - Cat 从文件输出并一次用 sed 替换单词

bash-completion - 第一次调用命令时定义的完成函数

c# - 从文件中读取一个 int 返回 ASCII

clojure - 如何判断一个字符是否是 Clojure 中的 ASCII 大写字母