首页 > 系统相关 >14-7 shell脚本进阶数组

14-7 shell脚本进阶数组

时间:2023-06-12 11:36:00浏览次数:72  
标签:shell 14 title echo sh 进阶 root declare centos8

一、数组的基本用法

关联数组需要先声明

[root@centos8 ~]#declare -a
declare -a BASH_ARGC=()
declare -a BASH_ARGV=()
declare -a BASH_COMPLETION_VERSINFO=([0]="2" [1]="7")
declare -a BASH_LINENO=()
declare -a BASH_SOURCE=()
declare -ar BASH_VERSINFO=([0]="4" [1]="4" [2]="20" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu")
declare -a DIRSTACK=()
declare -a FUNCNAME
declare -a GROUPS=()
declare -a PIPESTATUS=([0]="0")
[root@centos8 ~]#declare -a title
[root@centos8 ~]#declare -a 
declare -a title
[root@centos8 ~]#title[0]=ceo
[root@centos8 ~]#title[1]=coo
[root@centos8 ~]#title[2]=cto
[root@centos8 ~]#echo $title[*]
ceo[*]
[root@centos8 ~]#echo ${title[*]}
ceo coo cto
[root@centos8 ~]#car=(bba bmw audi xiaomi)
[root@centos8 ~]#echo${car[2]}
-bash: echoaudi: command not found
[root@centos8 ~]#echo ${car[2]}
audi
[root@centos8 ~]#echo ${car[*]}
bba bmw audi xiaomi
[root@centos8 ~]#ls
10.0.0.136  cmatrix-v2.0-Butterscotch.tar  continue.sh  disk_check.sh  expect3.sh  expect4.sh~  functions         reset.sh
cmatrix     continue2.sh                   dead.letter  expect2.sh     expect4.sh  expect.sh    install_httpd.sh
[root@centos8 ~]#declare -A family   先声明关联数组
[root@centos8 ~]#family[name]=smith
[root@centos8 ~]#family[address]=beijing
[root@centos8 ~]#family[num]=3
[root@centos8 ~]#echo ${family[name]}

[root@centos8 ~]#unset fiamily  删除数组

二、数组切片

[root@centos8 ~]#n=({1..10})
[root@centos8 ~]#echo ${n[*]}
1 2 3 4 5 6 7 8 9 10
[root@centos8 ~]#echo ${n[*]:3}
4 5 6 7 8 9 10
[root@centos8 ~]#echo ${#n[*]:3}
-bash: ${#n[*]:3}: bad substitution
[root@centos8 ~]#echo ${#n[*]}
10
[root@centos8 ~]#n[${#n[*]}]=11
[root@centos8 ~]#echo ${n[*]}
1 2 3 4 5 6 7 8 9 10 11
[root@centos8 ~]#

三、打印杨辉三角

[root@centos8 ~]#cat yanghuisanjiao.sh 
#!/bin/bash
if (test -z $1) ;then
        read -p "请输入行数:" MAX
else
        MAX=$1
fi
for ((i=1;i<=MAX;i++))
do
  for ((j=1;j<=i;j++))
  do
          f=$(($i-1))
         g=$(($j-1))
         if [ "$j" == 1  ];then
            declare SUM_${i}_$j=1
        else
          declare A=$[SUM_${f}_$j]
          declare B=$[SUM_${f}_$g]
          declare SUM_${i}_$j=`expr $A + $B`
        fi
    echo -n $[SUM_${i}_$j]
    echo -en "  "
  done
echo "  "
done

四、随机生成数,并找出最大值和最小值

[root@centos8 ~]#cat max_min.sh 
#!/bin/bash
declare -i min max
declare -a nums
for ((i=0;i<10;i++));do
        nums[$i]=$RANDOM
        [ $i -eq 0  ] && min=${nums[0]} && max=${nums[0]}&& continue
        [ ${nums[$i]} -gt $max  ] && max=${nums[$i]}&& continue
        [ ${nums[$i]} -lt $min  ] && min=${nums[$i]} 
done
echo "All numbers are ${nums[*]}"
echo Max is $max
echo Min is $min

 

标签:shell,14,title,echo,sh,进阶,root,declare,centos8
From: https://www.cnblogs.com/liujinxi/p/17474560.html

相关文章

  • 职场3大进阶能力,让你更快达成人生目标
    一、时间管理1.时间成本:花时间做,还是花钱买 2.GTD:用大脑来思考,而不是记事  3.猴子理论:每个人都应该承担自己的责任  4.三八理论:人生的不同由第三个8小时创造 5.番茄工作法:人真的可以三头六臂吗  二、职业素养微信礼仪:让跟你打交道的人觉得舒服 邮件礼仪:一封好的邮......
  • TYPESCRIPT进阶--命名空间
    以下都是我的ChartGpt老师教学的内容哦,(若想知道怎么用ChartGpt学习,或者想知道我的问答方式,可以点这个查看我的学习记录)一:理解命名空间的概念和作用命名空间是一种组织代码结构的方式,它将相关的代码放在一个命名空间内,避免命名冲突和代码重复。在TypeScript中,命名空间是通过关键......
  • windows 安装postgresql 14
    开源数据库PostgreSQL是1980年以加利福尼亚大学为中心开发出来的DBMS,与MySQL一样,都是世界上广泛应用的开源数据库(DB)。本文将会介绍使用64位版的Windows安装程序(Winx86-64)在WindowsServer2019(64位)系统中安装PostgreSQL的步骤,请大家结合自身实际下载相应的安装......
  • TypeScript进阶--命名空间(跟着ChartGpt学习)
    以下都是我的ChartGpt老师教学的内容哦,(若想知道怎么用ChartGpt学习,或者想知道我的问答方式,可以点这个查看我的学习记录)一:理解命名空间的概念和作用命名空间是一种组织代码结构的方式,它将相关的代码放在一个命名空间内,避免命名冲突和代码重复。在TypeScript中,命名空间是通过关键......
  • P1425 小鱼的游泳时间
    小鱼的游泳时间题目描述伦敦奥运会要到了,小鱼在拼命练习游泳准备参加游泳比赛,可怜的小鱼并不知道鱼类是不能参加人类的奥运会的。这一天,小鱼给自己的游泳时间做了精确的计时(本题中的计时都按小时制计算),它发现自己从时分一直游泳到当天的时分,请你帮小鱼计算一下,它这天一共......
  • TypeScript进阶--模块化(跟着ChartGpt学习)
    以下都是我的ChartGpt老师教学的内容哦,(若想知道怎么用ChartGpt学习,或者想知道我的问答方式,可以点这个查看我的学习记录)一:模块化的概念和优点在JavaScript中,我们通常使用全局变量和函数来组织我们的代码,这样容易导致命名冲突、代码复杂、可维护性差等问题。而模块化则是一种更好......
  • shell中if else if的写法,if elif
    需求描述:在写shell脚本的过程中,用到了ifelse的写法,突然有多个参数需要判断那么就想到了ifelseif的用法,于是进行如下的测试。测试过程:1.写如下的测试脚本,进行多个值的判断#!/bin/bashif[[$1='tomcat']];thenecho"Inputistomcat"elseif[[$1=......
  • Luogu P2375 [NOI2014] 动物园
    [NOI2014]动物园题目描述近日,园长发现动物园中好吃懒做的动物越来越多了。例如企鹅,只会卖萌向游客要吃的。为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法。某天,园长给动物们讲解KMP算法。园长:“对于一个字符串\(S\),它......
  • Powershell 应用之一
    前言:对于一个Windowsserver运维的管理员来说,powershell命令至关重要,它不仅仅能够提高你的工作效率,也是你工作中的好帮手,所以应该静下心来好好学习命令,虽然一开始不太习惯用着用着你就会爱不释手。一、AD对象日常管理用户管理例子1:统计OU下总共有多少个AD账号(Get-ADUser-Filter......
  • 202306112142-《最近开发心得...》
     没有心得就是在瞎搞,写心得就是“埋头耕耕,抬头看看”,看看自己做了什么......    心得就是心的感受,并非得到了什么,我以前是搞前端开发,仅仅4-5年时间,见证Angular市场份额的减少,backbone还嫌有耳闻,鲜有招聘;React框架从耳闻到霸屏;个人沐浴jquery的春风,枯于市场类似Vue......