Phi*_*pos 10 bash shell-script text-processing
脚本出于某种目的bash使用变量Q(超出了本问题的范围):
Q=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
Run Code Online (Sandbox Code Playgroud)
由于这个脚本是在每个字节都很重要的环境中使用的,所以这是浪费。但有些解决方法就像
Q=0$(seq -s "" 9)$(echo {A..Z}|tr -d " ")
Run Code Online (Sandbox Code Playgroud)
(对于C语言环境)更糟。我是不是太盲目了,看不到紧凑地生成如此简单序列的明显技巧?
pLu*_*umo 26
对于任何能够进行大括号扩展的 shell:
使用printf:
$ printf %s {0..9} {A..Z}
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
Run Code Online (Sandbox Code Playgroud)
-->
Q=$(printf %s {0..9} {A..Z})
Run Code Online (Sandbox Code Playgroud)
反引号而不是$()节省一个字节。特别是对于 Bash,printf -v var将 printf 写入变量很好,但不比反引号短。
printf -vQ %s {0..9} {A..Z}
Q=`printf %s {0..9} {A..Z}`
Run Code Online (Sandbox Code Playgroud)
我知道的最简单的方法是使用bash方法:
echo {0..9} {A..Z}|sed 's/ //g'
Run Code Online (Sandbox Code Playgroud)
(sed用于删除符号之间的空格。括号之间的空格很重要,否则您将看到从 0 到 9 和 A 到 Z 的所有组合0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z1A1B1C...)
建议您可以像这样缩短命令:
echo {0..9} {A..Z}|tr -d ' '
Run Code Online (Sandbox Code Playgroud)