初识shell

壹、shell变量

1. 常用方式

  ```
  # 1. 定义变量
  abc='abc'
  ABC
  _abc
  a1

  # 2. 使用变量
  ${abc}
  echo $abc

  # 3. 只读变量:将变量a1变为只读
  readonly a1

  # 4. 删除变量:删除变量ABC
  unset ABC
  ```

2. 变量类型

  1. 局部变量:仅在当前shell实例中有效
  2. 环境变量:所有的程序,包括shell启动的程序都能访问环境变量;必要时shell脚本可以自定义环境变量
  3. shell变量:shell程序设置的特殊变量。有一部分是环境变量,有一部分是局部变量

3. shell字符串:可以用单引号、双引号,也可以不用引号(保持良好编程习惯,最好用引号)

  ```
  # 1. 单引号:串中可以有成对的单引号,但是不能有单个的单引号;单引号中的变量是无效的
  str1='string one'

  # 2. 双引号:可以有转义字符;可以有变量
  str2="string two ${abc} \n"

  # 3. 获取字符串长度
  echo ${#str1}

  # 4. 提取子串
  echo ${str:1:3}

  # 5. 查找子串:查找字母i或o的位置,哪个先出现就返回哪个
  echo `expr index "$str1" io`
  ```

4. shell数组

  ```
  # 1. 定义数组:只支持一维数组;可以使用不连续的下标,而且范围不受限
  arr=(0 1 2)
  arr[5]=3
  arr[7]=4

  # 2. 读取数组
  ${arr[5]}  # 获取单个元素
  ${arr[@]}  # 获取所有元素

  # 3. 获取数组的长度
  # 3.1 获取数组元素的个数
  ${#arr[@]}
  ${#arr[*]}
  # 3.2 获取单个元素的长度
  ${#arr[5]}
  ```

5. shell注释

  ```
  # 1. 单行注释
  用#开头一行

  # 2. 多行注释:下面EOF也可以用其他字符代替
  :<<EOF
  *******
  *******
  *******
  EOF
  ```

贰、shell流程控制

1. if else

  ```
  a=10
  b=20
  if [ $a -eq $b ]     # 判断条件写在[]中,[ $a -eq $b ]可以换成(( $a == $b ))
  then
     echo "a 等于 b"
  elif [ $a -gt $b ]   # 判断条件写在[]中,[ $a -gt $b ]可以换成(( $a > $b ))
  then
     echo "a 大于 b"
  elif [ $a -lt $b ]   # 判断条件写在[]中,[ $a -lt $b ]可以换成(( $a < $b ))
  then
     echo "a 小于 b"
  else
     echo "没有符合的条件"
  fi
  ```

2. for

  ```
  for loop in 1 2 3 4 5
  do
    echo "The value is: $loop"
  done
  ```

3. while

  ```
  int=1
  while(( $int<=5 ))
  do
      echo $int
      let "int++"
  done
  ```

4. 无限循环

  ```
  # 1. 用while
  while :
  do
    command
  done
  # 2. 用for
  for(( ; ; ))
  ```

5. until:与while相反

  ```
  until condition
  do
    command
  done
  ```

6. case...esac

  ```
  site="runoob"

  case "$site" in
     "runoob") echo "菜鸟教程"
     ;;
     "google") echo "Google 搜索"
     ;;
     "taobao") echo "淘宝网"
     ;;
  esac
  ```

7. 跳出循环

break、continue

叁、shell函数

# 1. 定义函数
[ function ] funname [()]
{
  action;

  [return int;]
}

2. 函数参数

参考来源:
Shell 变量

posted @ 2022-08-24 15:27  二越  阅读(26)  评论(0编辑  收藏  举报