我想在unix中只有一个带空格的变量

时间:2015-06-29 10:39:32

标签: ksh

我想要一个包含'n'个空格的变量。我该怎么办?

3 个答案:

答案 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"; }