美文网首页
Linux: 生成数字序列和字母序列

Linux: 生成数字序列和字母序列

作者: LET149 | 来源:发表于2023-09-27 08:58 被阅读0次

    在shell中生成满足要求的数字序列各和字母序列

    1. 使用 { }

    1.1 生成连续数字序列
    (base) [zhiyong@malab Learn]$ echo {1..7}  #生成从1到7的整数数列,间隔为1,此为默认间隔
    1 2 3 4 5 6 7
    
    (base) [zhiyong@malab Learn]$ echo {7..-1}  #生成从7到-1的整数数列,间隔为1
    7 6 5 4 3 2 1 0 -1
    
    (base) [zhiyong@malab Learn]$ echo {1..8..2}  #生成从1到8的整数数列,间隔为2,从1开始,到范围之内的最后一个加和结果结束
    1 3 5 7
    
    1.2 生成字母序列
    (base) [zhiyong@malab Learn]$ echo {a..f}  #生成从a到f的小写字母序列,字母是连续的,间隔为1,此为默认
    a b c d e f
    
    (base) [zhiyong@malab Learn]$ echo {a..f..2}  #生成从a到f的小写字母序列,间隔为2的字母序列
    a c e
    
    (base) [zhiyong@malab Learn]$ echo {f..a..2}  #生成从f到a的小写字母序列
    f d b
    
    (base) [zhiyong@malab Learn]$ echo {A..F}  #生成从A到F的大写字母序列
    A B C D E F
    
    1.3 生成组合字母序列
    (base) [zhiyong@malab Learn]$ echo {s,f{a..d}{B..E},k,h}  #
    s faB faC faD faE fbB fbC fbD fbE fcB fcC fcD fcE fdB fdC fdD fdE k h
    
    1.4 { }中不支持对其他变量的调用
    (base) [zhiyong@malab Learn]$ x=8
    (base) [zhiyong@malab Learn]$ echo $x
    8
    (base) [zhiyong@malab Learn]$ echo {1..$x}
    {1..8}  #结果并没有生成数字序列
    

    2. 使用 seq

    seq仅支持生成数字序列,不支持字母序列的生成

    2.1 根据默认生成数字序列
    (base) [zhiyong@malab Learn]$ seq 1 5  #默认生成数字序列时,其数字间隔是1,数字间的分隔符是换行符 \n
    1
    2
    3
    4
    5
    
    2.2 生成按行排列的数字序列
    (base) [zhiyong@malab Learn]$ seq -s' ' 1 5 
    1 2 3 4 5
    

    -s 来指定分隔符,注意单引号要与 -s 相连,但引号之中的内容是分隔符

    2.3 生成指定间隔的数字序列
    (base) [zhiyong@malab Learn]$ seq -s' ' 1 3 20  #从1到20,以3为间隔生成数字序列,修改分隔符为空格
    1 4 7 10 13 16 19
    
    2.4 不指定起始位置,仅指定终止位置生成分隔符
    (base) [zhiyong@malab Learn]$ seq -s' ' 7 
    1 2 3 4 5 6 7
    

    当不指定起始位置,只指定终止位置时,默认的起始值为1,默认间隔为1

    2.5 调用其他变量生成数字序列
    (base) [zhiyong@malab Learn]$ x=3
    (base) [zhiyong@malab Learn]$ y=9
    (base) [zhiyong@malab Learn]$ seq -s' ' $x $y
    3 4 5 6 7 8 9
    

    可以在 seq 中调用其他变量,这一点与 { } 明显区分开

    2.6 在for语句中使用seq

    for 语句中使用 seq 时,要注意在seq语句的外部加上 $()

    for i in $(seq 1 5)
    do
        echo "这个数字是:$i"
    done
    
    3.0 任意指定一个数字变量

    其实是指定一个变量,并给这个变量赋值为以数字为元素的字符串

    (base) zhiyong@zhiyong-OptiPlex-7050:~$ aa='2 4 6 7'  #用单引号来定义变量,注意中间空格的使用;也可以用双引号来定义
    (base) zhiyong@zhiyong-OptiPlex-7050:~$ echo $aa
    2 4 6 7
    (base) zhiyong@zhiyong-OptiPlex-7050:~$ for i in $aa; do  echo "hello world"$i"is good"; done
    hello world2is good
    hello world4is good
    hello world6is good
    hello world7is good
    

    相关文章

      网友评论

          本文标题:Linux: 生成数字序列和字母序列

          本文链接:https://www.haomeiwen.com/subject/iomdnktx.html