有什么标准方法可以使 printf 的“%-6s”格式动态化?
function justify
{
echo "$(printf '%-6s' $1)"
}
我尝试将变量插入格式,但出现错误处理格式错误。
$(printf '%-${2}s' ${1})
有什么标准方法可以使 printf 的“%-6s”格式动态化?
function justify
{
echo "$(printf '%-6s' $1)"
}
我尝试将变量插入格式,但出现错误处理格式错误。
$(printf '%-${2}s' ${1})
不完全确定通过将命令替换传递给的意图是什么
echo
,但这应该可以解决问题:如果您
$1
为了传递多个参数而没有引用,请考虑"$@"
改用。关于您现有的尝试,有几点需要注意:
function
,这是非 POSIX。Shell 变量不在单引号内展开;the
$
被视为文字美元符号。您应该使用双引号来${2}
扩展为 shell 变量:您的问题并不完全清楚,因为使用命令替换将输出
printf '%-6s' $1
作为输入参数传递以echo
删除命令打印的任何空格字符printf
。在我看来,你的函数最好写成:至少在 bash 4.4+ 中,似乎可以使用 C 样式1
*
来访问下一个可用参数作为宽度或精度。例如:(
bar
仅包含后缀以使宽度foo
明显);或者1看
man 3 printf
例子