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

I want to have a variable with only spaces in unix

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

您可以使用函数 return 给定数量的空格:

n_spaces() { n=; while [ $((n--)) -gt 0 ]; do printf ' '; done; }

然后要分配给一个变量,使用var=$(n_spaces 5)

显然有很多方法可以使用其他 tools/languages 例如 Perl 来做到这一点:

n_spaces() { perl -se 'print " " x $x' -- -x=""; }

最简单的是使用这种特殊的 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 " ")

我可以使用排版来完成。

例如:

typeset -L11 x="";

这将为变量分配 11 个空格。

选项操作

-Ln

左对齐。删除前导空格;如果给定 n,则用空格填充或在右侧截断至长度 n。

-Rn

右对齐。删除尾随空格;如果给定 n,则用空格填充或在左侧截断至长度 n。

-Zn

如果与 -R 一起使用,请根据需要添加前导 0 而不是空格。如果与 -L 一起使用,去除前导 0。就其本身而言,其作用与 -RZ 相同。

-l
将字母转换为小写字母。

-u
将字母转换为大写。