我想要一个包含'n'个空格的变量。我该怎么办?
答案 0 :(得分:1)
最简单的方法是使用这种特殊的printf
格式:
n=10
# assign n char length space to var
printf -v var "%*s" $n " "
# check length
echo "${#var}"
10
PS:如果printf -v
不可用,请使用:
var=$(printf "%*s" $n " ")
答案 1 :(得分:1)
我可以使用排版。
例如:
typeset -L11 x="";
这将为变量分配11个空格。
选项操作
<强> -Ln 强>
左对齐。删除前导空格;如果给出n,则填充空格或截断右边的长度n。
-Rn
右对齐。删除尾随空格;如果给出n,则用空格填充或截断左边的长度n。
-Zn
如果与-R一起使用,则根据需要添加前导0而不是空格。如果与-L一起使用,则剥离前导0。本身的行为与-RZ相同。
<强> -l </强>
将字母转换为小写。
<强> -u 强>
将字母转换为大写。
答案 2 :(得分:0)
您可以使用函数返回给定数量的空格:
n_spaces() { n=$1; while [ $((n--)) -gt 0 ]; do printf ' '; done; }
然后要分配给变量,请使用var=$(n_spaces 5)
。
显然,有很多方法可以使用Perl等其他工具/语言来实现这一点:
n_spaces() { perl -se 'print " " x $x' -- -x="$1"; }