我需要将数字:十进制13和十进制10转换为它们在bash shell脚本中的等效字符。 生成的字符将是回车符和换行符。
任何想法如何做到这一点?
我讨厌给这个答案,但在bash中,你可以这样做:
NL = $ '\ 12'
使$ nl成为一个换行符的字符串。 (八进制12)所以你可以从一个十进制值填充类似的东西:
N = 10 N8 = $(printf%o $ N) eval nl =“\ $'\\ $ N8'”
你可以使用printf
两次,一次转换为八进制,另一次转换为ascii
A=10 printf \\$(printf '%03o' "$A")
$ A=10;printf \\$(printf '%03o' "$A") | od -c 0000000 \n 0000001
这可能不是最简单的解决方案,但首先想到的是使用printf。 不幸的是,printf需要八进制值,所以你需要翻译。 要打印A(ascii十进制值65),可以使用dc来计算八进制数并执行:
$ A = 65 $ printf \\ $(echo 8o $ {A} p | dc)
如果你愿意使用Perl:
$ perl -e“print chr $ A”#打印字符,其十进制值存储在shell变量A中 $ perl -e'print chr 10'#print a carriage return
也许正则表达式是适合你的东西:
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