我想在 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
将字母转换为大写。
我想要一个包含 '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
将字母转换为大写。