Linux shell脚本中十进制的字符等价物

Linux shell脚本中十进制的字符等价物,linux,shell,Linux,Shell,我需要在bashshell脚本中将数字:十进制13和十进制10转换为它们的等效字符。生成的字符将是回车符和换行符 知道怎么做吗?这可能不是最简单的解决方案,但首先想到的是使用printf。不幸的是,printf需要八进制值,所以需要进行转换。要打印A(ascii十进制值65),可以使用dc计算八进制数并执行以下操作: $ A=65 $ printf \\$( echo 8o${A}p | dc ) $A=65 $printf\\$(echo 8o${A}p|dc) 如果您愿意使用perl: $

我需要在bashshell脚本中将数字:十进制13和十进制10转换为它们的等效字符。生成的字符将是回车符和换行符


知道怎么做吗?

这可能不是最简单的解决方案,但首先想到的是使用printf。不幸的是,printf需要八进制值,所以需要进行转换。要打印A(ascii十进制值65),可以使用dc计算八进制数并执行以下操作:

$ A=65 $ printf \\$( echo 8o${A}p | dc ) $A=65 $printf\\$(echo 8o${A}p|dc) 如果您愿意使用perl:

$ perl -e "print chr $A" # print character whose decimal value is stored in shell variable A $ perl -e 'print chr 10' # print a carriage return $perl-e“print chr$A”#打印其十进制值存储在shell变量A中的字符 $perl-e“print chr 10”#打印回车
您可以使用
printf
两次,一次转换为八进制,另一次转换为ascii

A=10
printf \\$(printf '%03o' "$A")
证明
我不想给出这个答案,但在bash中,您可以:

nl=$'\12' nl=$'\12' 使$nl成为具有单个换行符的字符串。(八进制12) 因此,您可以从十进制值填充以下内容:

N=10 N8=$( printf %o $N ) eval nl="\$'\\$N8'" N=10 N8=$(printf%o$N) eval nl=“\$”\\$N8'”
也许regex对你来说很有用:

msg="13 ways to leave your lover is a top 10 hit for 1310 days"
stp1=${msg//10/\\n}
echo -e ${stp1//13/\\r}    
结果:

 ways to leave your lover is a top 
 hit for 
 days

有什么方法可以保存生成的字符吗?将它们存储在文件中或放在变量中。A=$(printf\\$(echo 8o65p | dc))应该将“A”赋值给A。但是,由于$()修剪尾随的换行符,您将得到一个空字符串,因此换行符会有问题。下面是一种将空格放入变量A:eval“$(printf“A='\$(echo 8o10p | dc)”的糟糕方法
 ways to leave your lover is a top 
 hit for 
 days