基础

执行

  1. # 方式一
  2. bash hello.sh
  3. # 方式二
  4. chmod +x hello.sh
  5. ./hello.sh

变量

变量名和等号之间不能有空格

  • 定义变量
  1. your_name="qinjx"
  2. for file in `ls /etc`
  • 使用变量
  1. # 使用
  2. $your_name
  3. ${your_name}
  • 删除变量
  1. unset your_name

字符串

单引号任何字符都会原样输出, 双引号里可以有变量

  • 操作
  1. # 拼接字符串
  2. your_name="qinjx"
  3. greeting_1="hello, ${your_name} !"
  4. # 获取字符串长度:
  5. string="abcd"
  6. echo ${#string} #输出:4
  7. # 提取子字符串
  8. string="alibaba is a great company"
  9. echo ${string:1:4} #输出:liba

while

  1. i=1
  2. while ((i<=3))
  3. do
  4. echo $i
  5. let i++ #循环变量递增
  6. done

for 循环

  1. # 方式一
  2. for N in 1 2 3; do echo $N; done
  3. # 方式二
  4. for ((i = 0; i <= 5; i++))
  5. do
  6. echo "welcome $i times"
  7. done

if判断

  1. read -p "please input your name:" NAME ## read命令用于从控制台读取输入数据
  2. ## printf '%s\n' $NAME
  3. if [ $NAME = root ]
  4. then
  5. echo "hello ${NAME}, welcome!"
  6. elif [ $NAME = itcast ]
  7. then
  8. echo "hello ${NAME}, welcome!"
  9. else
  10. echo "SB, get out here!"
  11. fi
  12. = ==
  13. != !=
  14. -eq ==
  15. -ne !=
  16. -gt >
  17. -lt <
  18. -ge >=
  19. -le <=
  20. ! !
  21. -o ||
  22. -a &&

case

  1. echo '输入 1 到 4 之间的数字:'
  2. echo '你输入的数字为:'
  3. read aNum # 命令行读取一个数据赋值给aNum变量
  4. case $aNum in
  5. 1) echo '你选择了 1'
  6. ;;
  7. 2) echo '你选择了 2'
  8. ;;
  9. 3) echo '你选择了 3'
  10. ;;
  11. 4) echo '你选择了 4'
  12. ;;
  13. *) echo '你没有输入 1 到 4 之间的数字'
  14. ;;
  15. esac

文件包含

  1. #! /bin/bash
  2. . ./test1.sh
  3. # source ./test1.sh
  4. echo "姓名: $name"

函数

  1. #!/bin/bash
  2. show(){
  3. echo "当前脚本名称:$0"
  4. echo "第一个参数:$1"
  5. echo "第二个参数:$2"
  6. echo "第三个参数:$3"
  7. echo "参数数量:$#"
  8. echo "所有参数(整体string):$*"
  9. echo "所有参数(列表"",""):$@"
  10. echo "当前进程编号:$$"
  11. return 2 # 0-255的状态码
  12. }
  13. show first second # 执行函数
  14. echo "返回值: $"
  15. # 执行结果:
  16. # 当前脚本名称:./func.sh
  17. # 第一个参数:first
  18. # 第二个参数:second
  19. # 第三个参数:
  20. # 参数数量:2
  21. # 所有参数:first second
  22. # 所有参数:first second
  23. # 当前进程编号:19702
  24. # 返回值: 2