我需要生成一串点(.字符)作为变量.
即,在我的Bash脚本中,输入15我需要生成这个长度为15的字符串:...............
我需要这样做.我尝试使用它作为基础(来自Unix.com):
for i in {1..100};do printf "%s" "#";done;printf "\n"
Run Code Online (Sandbox Code Playgroud)
但是如何让100成为一个变量呢?
小智 64
您可以从/ dev/zero获得所需数量的NULL字节.然后,您可以将这些转换为其他字符.以下打印16小写a
head -c 16 < /dev/zero | tr '\0' '\141'
Run Code Online (Sandbox Code Playgroud)
Chr*_*sen 32
len=100 ch='#'
printf '%*s' "$len" | tr ' ' "$ch"
Run Code Online (Sandbox Code Playgroud)
Epi*_*ene 17
没有循环的最简单和最短的方式
VAR=15
Run Code Online (Sandbox Code Playgroud)
打印与VAR一样多的点(如果您愿意,可将第一个点更改为任何其他字符):
printf '.%.0s' {1..$VAR}
Run Code Online (Sandbox Code Playgroud)
将虚线保存在稍后要使用的变量中:
line=`printf '.%.0s' {1..$VAR}`
echo "Sign here $line"
Run Code Online (Sandbox Code Playgroud)
- 从dogbane的答案中偷偷偷走了/sf/answers/374488971/
编辑:由于我现在切换到 fish shell,这里是config.fish中定义的一个函数,它在shell中方便地执行:
function line -a char -a length
printf '%*s\n' $length "" | tr ' ' $char
end
Run Code Online (Sandbox Code Playgroud)
用途:line = 8生产========,line \" 8生产"""""""".
我在另一个问题中演示了使用单个命令完成此任务的方法,假设要生成固定数量的字符。
我在最后添加了一个关于生成可变数量的重复字符的附录,这正是您所要求的,所以我之前的回答在这里是相关的:
我提供了它在那里如何工作的完整解释。在这里,我将添加代码来完成您的要求:
n=20 # This the number of characters you want to produce
variable=$(printf "%0.s." $(seq 1 $n)) # Fill $variable with $n periods
echo $variable # Output content of $variable to terminal
Run Code Online (Sandbox Code Playgroud)
输出:
....................
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37549 次 |
| 最近记录: |