P21

bash变量的类型:
本地变量
环境变量
位置变量:$1;$2等等;shift可用来轮替参数
特殊变量:$?(返回命令执行状态码);$#(显示有几个参数);$*(显示出所有的参数);$@(显示所有的参数)

QQ截图20220129170118.png

bash -n 脚本 【可以测试脚本是否存在语法错误】
bash -x 脚本 【可以把每次执行的结果显示出来,也可用来判断脚本错误】

文件测试

-e FILE :测试文件是否存在
-f FILE:测试文件是否为普通文件
-d FILE:测试指定路径是否为目录
-r FILE:测试当前用户对指定文件是否有读取权限
-w FILE
-x FILE

多分支if语句:

if 判断条件; then
command1
……
elif 判断条件; then
command2
……
elif 判断条件; then
command3
……
else command4
fi

P22

p23

字符测试

== 测试是否相等,相等为真,不等为假
!= 测试是否不等,不等为真,等为假
>
<
-n 测试指定字符串是否为空,空则真,不空则假
-s 测试指定字符串是否不空,不空为真,空为假

循环

循环:进入条件,退出条件
for;while;until

整数列表生成
{1..100};seq 起始数 步长 结束数

declare -i sum=0 【指定sun是整数,默认情况下变量是字符】

QQ截图20220203160131.png

1

  1. #!/bin/bash
  2. LINE=`wc -l /etc/passwd|cut -d" " -f1`
  3. for I in `seq 1 $LINE`
  4. do
  5. echo "Hello, `sed -n "${I}p" /etc/passwd | cut -d: -f1`, your shell: `sed -n "${I}p" /etc/passwd | cut -d: -f7`"
  6. done

2

  1. #!/bin/bash
  2. if [ $# -lt 1 ];then
  3. echo "Usage adminuser ARG"
  4. exit 7
  5. fi
  6. INPUT=$1
  7. if [ $INPUT == "add" ];then
  8. for i in {1..10}
  9. do
  10. if ! id user${i} &> /dev/null ;then
  11. useradd -m user${i}
  12. echo "user${i}:user${i}" |chpasswd #指定密码为用户名称
  13. echo "Add user${i} finished"
  14. else
  15. echo "user${i} exits"
  16. fi
  17. done
  18. elif [ $INPUT == "del" ];then
  19. for i in {1..10}
  20. do
  21. if id user${i} &> /dev/null ;then
  22. userdel -r user${i}
  23. echo "Delet user${i} finished"
  24. else
  25. echo "user${i} not exists"
  26. fi
  27. done
  28. else
  29. echo "input del or add"
  30. fi

3

  1. #!/bin/bash
  2. sum=0
  3. for i in {1..100};do
  4. a=$[i%3]
  5. if [ $a -eq 0 ];then
  6. let sum=$[$sum+$i]
  7. fi
  8. done
  9. echo "sum is $sum"

4

  1. #!/bin/bash
  2. sum=0
  3. for i in {1..100};do
  4. a=$[i%2]
  5. if [ $a -eq 0 ];then
  6. let oushu=$[$oushu+$i]
  7. else
  8. let jishu=$[$jishu+$i]
  9. fi
  10. done
  11. echo "oushu is $oushu;jishu is $jishu"
  12. ~~~~~~~~~~~~~~~~~~~~~~~~~~~·
  13. #!/bin/bash
  14. sum=0
  15. for i in {1..100};do
  16. # a=$[$i%2]
  17. if [ $[$i%2] -eq 0 ];then
  18. let oushu=$[$oushu+$i]
  19. else
  20. let jishu=$[$jishu+$i]
  21. fi
  22. done
  23. echo "oushu is $oushu;jishu is $jishu"

let I+=10 变量i在自身的基础上加一并放回原变量
let I+=1 等同于 I++