美文网首页
Shell入门06 -- 数组与函数

Shell入门06 -- 数组与函数

作者: YanZi_33 | 来源:发表于2021-10-11 17:59 被阅读0次

普通数组

  • 创建脚本文件sf_array_01.sh,内容如下:
#!/usr/bin/bash

my_array=(A B "C" D)
my_array[4]=E


echo "第一个元素为: ${my_array[0]}"
echo "第二个元素为: ${my_array[1]}"
echo "第三个元素为: ${my_array[2]}"
echo "第四个元素为: ${my_array[3]}"
echo "第五个元素为: ${my_array[4]}"

echo "所有元素: ${my_array[*]}"
echo "所有元素: ${my_array[@]}"
echo "所有元素索引:${!my_array[*]}"

echo "数组的长度为: ${#my_array[*]}"
  • 执行脚本sh sf_array_01.sh,结果如下:
    image.png
  • ${my_array[0]}:获取数组指定下标元素;
  • ${my_array[*]}${my_array[@]}:获取数组所有元素;
  • ${!my_array[*]}:获取数组所有索引;
  • ${#my_array[*]}:获取数组长度;

关联数组

  • Bash从4.0版本才开始支持使用关联数组,若Bash版本低于4.0版本就使用关联数组,就会出现报错;
  • 关联数组的下标可以采用非整型类型,类似于java中的key-value类型,其中,key为下标,value为对应的元素的值,key唯一,value可以不唯一;
  • 使用关联数组前应该先声明 declare -A array

函数

  • 函数是shell脚本中自定义的一系列执行命令,一般来说函数应该有返回值,正确返回0,错误返回非0;
函数的定义,实现与调用
  • 函数的定义实现,创建脚本文件function.sh,如下所示:
#!/bin/bash

#函数定义一
function hello(){
  echo "hello world!!!"
}

#函数调用
hello

#函数定义二 
hello2(){
  echo "hello2 world!!!"
}

#函数调用
hello2
案例:统计文件行数
  • 创建脚本文件function_count.sh,内容如下:
#!/bin/bash

File=/etc/passwd

count(){
  local I=0
  while read line
  do
    let I++

  done <$File

  echo "$File is count $I"
}

count
  • 统计文件/etc/passwd的所有行数;
函数返回值
  • 函数的返回值又叫函数的退出状态,实际上是一种通信方式;
  • 创建脚本文件function_file.sh,内容如下:
#!/bin/bash


File=/etc/qqqqq

check_file(){
   if [ -f $File ]; then
       return 0
   else
       return 1
   fi
}

check_file

if [ $? -eq 0 ]; then
   echo "该文件存在 $File"
else
   echo "该文件不存在 $File"
fi
  • if [ -f $File ]:判断File文件是否存在;
案例:数字游戏
  • 创建脚本文件function_num.sh,内容如下:
#!/bin/bash

check_num(){
   read -p "请输入对应的数字: " num

   if [ $num -ge 0 -a $num -lt 10 ]; then
      return 0
   elif [ $num -ge 10 -a $num -lt 20 ]; then
      return 1
   elif [ $num -ge 20 -a $num -lt 30 ]; then
      return 2
   else
      return 3
   fi
}

check_num

#变量保存check_num函数的返回值
test=$?

if [ $test -eq 0 ]; then
   echo "您输入的数字是[0,10)"
elif [ $test -eq 1 ]; then
   echo "您输入的数字是[10,20)"
elif [ $test -eq 2 ]; then
   echo "您输入的数字是[20,30)"
else
   echo "您输入的数字 -- 其他"
fi
  • 注意⚠️:需要用变量记录check_num函数的返回值,否则会出现逻辑错误,执行脚本,如下所示:
image.png
指定位置参数值
  • 我们知道在脚本运行时可以传入位置参数,还可以使用内置命令set给脚本指定位置参数的值(又叫重置),一旦使用set设置了传入参数的值,脚本将忽略运行时传入的位置参数;
  • 创建脚本文件function_set.sh,内容如下:
#!/bin/bash

set 6 5 4 3 2 1 2 3 4 5 6

count=1

for i in $*
do
  echo "count: $i"
  let count++
done
  • 会遍历打印 set 所有数值;

相关文章

网友评论

      本文标题:Shell入门06 -- 数组与函数

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