Bash 在shell中使用循环的右间隔打印

Bash 在shell中使用循环的右间隔打印,bash,shell,Bash,Shell,请帮我把右边打印出来好吗 预期输出:在使用Bash的右间隔楼梯图像中,使用条件格式在第一个#前面加上适当数量的空格: vivsingh@blr-mp4sj:~/Desktop$ ./staircases.sh 虽然我怀疑您使用了C风格的for循环,但您打算用POSIX-shell以外的东西来标记您的问题,如果您仅限于POSIX shell,那么您可以轻松地使用While循环来完成您正在尝试的内容 # ## ### #### ##### ###### 示例使用/

请帮我把右边打印出来好吗


预期输出:在使用Bash的右间隔楼梯图像中,使用条件格式在第一个
#
前面加上适当数量的空格:

vivsingh@blr-mp4sj:~/Desktop$ ./staircases.sh 

虽然我怀疑您使用了C风格的
for
循环,但您打算用POSIX-
shell
以外的东西来标记您的问题,如果您仅限于POSIX shell,那么您可以轻松地使用
While
循环来完成您正在尝试的内容

     #
    ##
   ###
  ####
 #####
######
示例使用/输出

#!/bin/sh

cnt=0
line='#'

while [ "$cnt" -lt '6' ]; do
    printf "%6s\n" "$line"
    line="$line#"
    cnt=$((cnt+1))
done
#!/bin/sh

cnt=0
line='#'
lim=${1:-6}

while [ "$cnt" -lt "$lim" ]; do
    printf "%*s\n" "$lim" "$line"
    line="$line#"
    cnt=$((cnt+1))
done
您还可以使用格式说明符的
'%*s'
格式,输入希望作为第一个参数(位置参数)输出到您的程序的
\/code>的编号,如果未指定参数,则使用默认值
6
,例如

$ sh prn6.sh
     #
    ##
   ###
  ####
 #####
######
示例使用/输出

#!/bin/sh

cnt=0
line='#'

while [ "$cnt" -lt '6' ]; do
    printf "%6s\n" "$line"
    line="$line#"
    cnt=$((cnt+1))
done
#!/bin/sh

cnt=0
line='#'
lim=${1:-6}

while [ "$cnt" -lt "$lim" ]; do
    printf "%*s\n" "$lim" "$line"
    line="$line#"
    cnt=$((cnt+1))
done
无论您是否仅限于POSIX shell,右对齐输出的关键是使用
printf
%6s
格式说明符,其中
6
是默认右对齐的字段宽度,或者,您只需按正确的顺序一次输出一个字符的不同数量的
空格
'#'


因为看起来可以使用C风格的
for
循环,所以请查看codeforester的答案,以获取使用该循环形式的示例。(另外,请确保使用正确的shell正确标记问题,以确保获得最适用的答案)

循环后需要换行符-可以将换行符打印代码移动到for循环后。否则,当前代码将打印所需的输出。当前代码将打印以下内容:vivsingh@blr-第四次现场施工现场现场现场施工:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五。。。。。办公室办公室办公室办公室办公室办公室办公室。。。。。。。。。。。。办公室。。。。。。。。。。。办公室办公室办公室办公室办公室办公室。。办公室。。。办公室。。。。办公室。。。。。办公室。。。办公室办公室。办公室办公室。办公室。办公室。。。办公室。办公室。办公室。。。办公室。。。。。。。办公室。周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五。。。。。。。。。。。。。。。。你也可以使用
printf“#####################{在读取-n1 char时,do line=“$line$char printf”%6s\n“$line”完成}
唯一的诡辩是,对于可能导致问题的
循环,您不会有C风格的
。(尽管有些人在表示bash/zsh等的时候会标记
shell
,考虑到问题中的用法,我认为您是安全的.)
cnt=$((cnt+1))
可以写成
((cnt++)
@codeforester-很好的指针,但posixshell不支持
((var++)
)。看见
$ sh prn6.sh 3
  #
 ##
###

$ sh prn6.sh 8
       #
      ##
     ###
    ####
   #####
  ######
 #######
########