Linux shell脚本中的十进制字符

时间:2012-03-04 00:51:07

标签: linux shell

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

知道如何做到这一点?

4 个答案:

答案 0 :(得分:1)

您可以使用printf两次,一次转换为八进制,另一次转换为ascii

A=10
printf \\$(printf '%03o' "$A")

证明

$ A=10;printf \\$(printf '%03o' "$A") | od -c
0000000  \n
0000001

答案 1 :(得分:1)

我讨厌给出这个答案,但在bash中你可以做到:

nl=$'\12'

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

N=10
N8=$( printf %o $N )
eval nl="\$'\\$N8'"

答案 2 :(得分:0)

这可能不是最简单的解决方案,但首先想到的是使用printf。不幸的是,printf需要八进制值,所以你需要翻译。要打印A(ascii十进制值65),可以使用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

答案 3 :(得分:0)

也许正则表达式适合你:

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