100个Shell脚本——【脚本1】打印形状

【脚本1】打印形状

一、脚本
打印等腰三角形、直角三角形、倒直角三角形、菱形

#!/bin/bash

#等腰三角形
read -p "Please input the length:" n
for i in `seq 1 $n`
do
  for ((j=$n;j>i;j--))
  do
      echo -n " "
  done
  for m in `seq 1 $i`
  do
      echo -n "*"
  done
  echo
done

#直角三角形
read -p "Please input the length:" n
for i in `seq 1 $n`
do
  for ((j=1;j<=$i;j++))
  do
     echo -n "*"
  done
  echo
done

#倒直角三角形
read -p "Please input the length:" n
for i in `seq 1 $n`
do
    for j in `seq $i $n`
    do
        echo -n "*"
    done
    echo
done

#菱形
read -p "Please input the length:" n
for i in `seq 1 $n`
do
   for ((j=$n;j>i;j--))
   do
      echo -n " "
   done
   echo
   for m in `seq 1 $i`
   do
      echo -n "*"
   done
   echo
done
for i in `seq 1 $n`
do
    for ((j=1;j<=$i;j++))
    do
        echo -n " "
    done
    echo
    for ((k=$i;k<=$n-1;k++))
    do
       echo -n "*"
    done
    echo
done

二、小结

1、for循环语句
参考:
[1]shell脚本之for循环
[2]shell条件控制和循环结构
1.1 for语法结构

for 循环条件
do
   shell语句
done

2、seq命令
参考:
[1]shell脚本之seq命令
2.1 seq命令语法

用法:seq [选项]... 尾数
 或:seq [选项]... 首数 尾数
 或:seq [选项]... 首数 增量 尾数
选项:
    -f, --format=FORMAT      use printf style floating-point FORMAT
    -s, --separator=STRING   use STRING to separate numbers (default: \n)
    -w, --equal-width        equalize width by padding with leading zeroes

3、echo命令
参考:
[1]linux echo命令的-n、-e两个参数
3.1 echo命令语法

echo -n 不换行输出
echo -e 处理特殊字符
若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;

4、read命令
参考:
[1]SHELL脚本--read命令
4.1 read命令语法
read [-rs] [-a ARRAY] [-d delim] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [var_name1 var_name2 ...]
read命令用于从标准输入中读取输入单行,并将读取的单行根据IFS变量分裂成多个字段,并将分割后的字段分别赋值给指定的变量列表var_name。第一个字段分配给第一个变量var_name1,第二个字段分配给第二个变量var_name2,依次到结束。如果指定的变量名少于字段数量,则多出的字段数量也同样分配给最后一个var_name,如果指定的变量命令多于字段数量,则多出的变量赋值为空。
如果没有指定任何var_name,则分割后的所有字段都存储在特定变量REPLY中。

选项说明:
-a:将分裂后的字段依次存储到指定的数组中,存储的起始位置从数组的index=0开始。
-d:指定读取行的结束符号。默认结束符号为换行符。
-n:限制读取N个字符就自动结束读取,如果没有读满N个字符就按下回车或遇到换行符,则也会结束读取。
-N:严格要求读满N个字符才自动结束读取,即使中途按下了回车或遇到了换行符也不结束。其中换行符或回车算一个字符。
-p:给出提示符。默认不支持"\n"换行,要换行需要特殊处理,见下文示例。例如,"-p 请输入密码:"
-r:禁止反斜线的转义功能。这意味着"\"会变成文本的一部分。
-s:静默模式。输入的内容不会回显在屏幕上。
-t:给出超时时间,在达到超时时间时,read退出并返回错误。也就是说不会读取任何内容,即使已经输入了一部分。
-u:从给定文件描述符(fd=N)中读取数据。

posted on 2020-07-31 13:58  渴望飞翔的xian鱼  阅读(834)  评论(0编辑  收藏  举报

导航