我需要生成一个点串(.字符)作为变量。
也就是说,在我的Bash脚本中,对于输入15,我需要生成长度为15:...............的字符串。
我需要以不同的方式去做。我尝试使用它作为一个基础(来自Unix.com):
for i in {1..100};do printf "%s" "#";done;printf "\n"但是如何使100成为一个变量呢?
发布于 2011-05-06 19:05:49
您可以从/dev/零中获取任意数量的空字节。然后,您可以将这些字符转换为其他字符。以下打印16个小写a
head -c 16 < /dev/zero | tr '\0' '\141'发布于 2010-07-09 12:51:59
len=100 ch='#'
printf '%*s' "$len" | tr ' ' "$ch"发布于 2014-04-15 15:04:05
最简单、最短的没有循环的方法
VAR=15按照VAR的要求打印多个点(如果您愿意,可以将第一个点更改为任何其他字符):
printf '.%.0s' {1..$VAR}将虚线保存在变量中,供以后使用:
line=`printf '.%.0s' {1..$VAR}`
echo "Sign here $line"-Blatantly偷了dogbane的答案https://stackoverflow.com/a/5349842/3319298
编辑:由于我现在切换到fish shell,下面是在config.fish中定义的函数,该函数可以方便地在该shell中实现这一点:
function line -a char -a length
printf '%*s\n' $length "" | tr ' ' $char
end用法:line = 8生产========,line \" 8生产""""""""。
https://stackoverflow.com/questions/3211891
复制相似问题