如何使用 printf 打印“-”
How to print "-" using printf
我正在尝试使用 printf
多次打印“-”。我正在使用下面的命令多次打印相同的字符,这对除“-”以外的所有字符都有效。
printf "`printf '=%.0s' {1..30}` \n"
当我尝试对“-”做同样的操作时,出现错误。
printf "`printf '-%.0s' {1..30}` \n"
bash: printf: -%: invalid option
它试图将其作为用户传递的选项。我该如何解决这个问题?
在每个 printf
调用之前将 --
传递给每个 printf
调用:
printf -- "`printf -- '-%.0s' {1..30}` \n"
与许多命令一样,printf
采用以 -
开头的标记形式的选项(尽管 -v
和 --
是我所知道的唯一选项)。这会干扰您的参数字符串,因为 printf
试图将 -%.0s
解析为一个选项。但是,对于这种情况,它支持 --
选项(与许多其他命令一样),该选项终止选项解析并逐字传递所有后续参数。
您要打印 30 个连字符吗?我就是这样做的:
printf "%*s\n" 30 "" | sed 's/ /-/g'
printf 命令打印一行 30 个空格,然后使用 sed 将它们全部变成连字符
这个可以封装成一个函数:
ruler() { printf "%*s\n" "" "" | sed "s/ /${2//\//\\/}/g"; }
然后您可以执行以下操作:
ruler $(tput cols) =
我正在尝试使用 printf
多次打印“-”。我正在使用下面的命令多次打印相同的字符,这对除“-”以外的所有字符都有效。
printf "`printf '=%.0s' {1..30}` \n"
当我尝试对“-”做同样的操作时,出现错误。
printf "`printf '-%.0s' {1..30}` \n"
bash: printf: -%: invalid option
它试图将其作为用户传递的选项。我该如何解决这个问题?
在每个 printf
调用之前将 --
传递给每个 printf
调用:
printf -- "`printf -- '-%.0s' {1..30}` \n"
与许多命令一样,printf
采用以 -
开头的标记形式的选项(尽管 -v
和 --
是我所知道的唯一选项)。这会干扰您的参数字符串,因为 printf
试图将 -%.0s
解析为一个选项。但是,对于这种情况,它支持 --
选项(与许多其他命令一样),该选项终止选项解析并逐字传递所有后续参数。
您要打印 30 个连字符吗?我就是这样做的:
printf "%*s\n" 30 "" | sed 's/ /-/g'
printf 命令打印一行 30 个空格,然后使用 sed 将它们全部变成连字符
这个可以封装成一个函数:
ruler() { printf "%*s\n" "" "" | sed "s/ /${2//\//\\/}/g"; }
然后您可以执行以下操作:
ruler $(tput cols) =