Linux小推车

Linux Day22:条件判断+if+case

2018-11-15  本文已影响1人  泥人吴

命令的间的逻辑关系:

root@VM-0-3-ubuntu:~# id user1
uid=1000(user1) gid=1000(user1) groups=1000(user1)
root@VM-0-3-ubuntu:~# id user1 &> /dev/null && echo "Hello,student"
Hello,student
root@VM-0-3-ubuntu:~# id student2 &> /dev/null && echo "Hello,student"
root@VM-0-3-ubuntu:~# useradd student2
root@VM-0-3-ubuntu:~# id student2 &> /dev/null && echo "Hello,student"
Hello,student
root@VM-0-3-ubuntu:~# id user6
id: ‘user6’: no such user
root@VM-0-3-ubuntu:~# id user6 || useradd user6
uid=1008(user6) gid=1008(user6) groups=1008(user6)

后续学习:if ;then;else

if:

if  判断条件;then
  statement1
  statement2
  ...
fi
if 判断条件;then
  statement1
  statement2
   ...
else
  statement3
  statement4
   ...
fi
# 判断user1是否存在并显示出来:
root@VM-0-3-ubuntu:/home/ubuntu# nano sh03.sh
root@VM-0-3-ubuntu:/home/ubuntu# chmod +x sh03.sh
root@VM-0-3-ubuntu:/home/ubuntu# ./sh03.sh
user1 exist.
root@VM-0-3-ubuntu:/home/ubuntu# cat sh03.sh
#! /bin/bash
#
NAME=user1
if id $NAME &> /dev/null;then
 echo "$NAME exist."
else
 echo "$NAME not exist."
fi

# 用户不存在时,则添加一个
root@VM-0-3-ubuntu:/home/ubuntu# ./sh03.sh
add user5 finished.
root@VM-0-3-ubuntu:/home/ubuntu# cat sh03.sh
#! /bin/bash
#
NAME=user5
if id $NAME &> /dev/null;then
 echo "$NAME exist."
else
 useradd $NAME
 echo $NAME | passwd --stdin $NAME &> /dev/null
 echo "add $NAME finished."
fi
root@VM-0-3-ubuntu:/home/ubuntu# ./sh03.sh
user5 exist.

# 理解&>的意思,那么将其删除看看有什么效果。
root@VM-0-3-ubuntu:/home/ubuntu# nano sh03.sh
root@VM-0-3-ubuntu:/home/ubuntu# cat sh03.sh
#! /bin/bash
#
NAME=user5
if id $NAME ;then
 echo "$NAME exist."
else
 useradd $NAME
 echo $NAME | passwd --stdin $NAME &> /dev/null
 echo "add $NAME finished."
fi
root@VM-0-3-ubuntu:/home/ubuntu# ./sh03.sh
uid=1011(user5) gid=1011(user5) groups=1011(user5)
user5 exist.
root@VM-0-3-ubuntu:/home/ubuntu# nano sh03.sh
if 判断条件1;then
  statement1
  ...
elif 判断条件2;then
  ...
elif 判断条件3;then
  ...
fi

一个小练习:if+for

root@VM-0-3-ubuntu:/home/ubuntu# ./sh06.sh
user1 exsits
user2 exsits
user3 exsits
Add user4 access
user5 exsits
user6 exsits
Add user7 access
Add user8 access
Add user9 access
user10 exsits
root@VM-0-3-ubuntu:/home/ubuntu# cat sh06.sh 
# !/bin/bash
#
for I in {1..10};do
 if id user$I &> /dev/null;then
  echo "user$I exsits"
 else
  useradd user$I
  echo user$I | passwd --stdin user$I &> /dev/null
  echo "Add user$I access"
 fi 
done

提前结束进程exit

测试脚本是否有语法错误

case

case SWITH in
value1)
  statement
  ...
  ;;
value2)
  statement
  ...
  ;;
*)
  statement
  ...
  ;;
esac
ubuntu@VM-0-3-ubuntu:~$ vim case.sh
ubuntu@VM-0-3-ubuntu:~$ cat case.sh 
#/bin/bash
#
case $1 in
[0-9])
 echo "A digit" ;;
[a-z])
 echo "Lower" ;;
[A-Z])
 echo "Upper" ;;
*)
 echo "special character" ;;
esac
ubuntu@VM-0-3-ubuntu:~$ bash -n case.sh 
ubuntu@VM-0-3-ubuntu:~$ chmod +x case.sh 
ubuntu@VM-0-3-ubuntu:~$ ./case.sh 9
A digit
ubuntu@VM-0-3-ubuntu:~$ ./case.sh a
Lower
ubuntu@VM-0-3-ubuntu:~$ ./case.sh A
Lower
ubuntu@VM-0-3-ubuntu:~$ ./case.sh !
special character
ubuntu@VM-0-3-ubuntu:~$ ./case.sh B
Lower
# 想想为什么此处的A/B都显示为lower?
# 如果换成if该如何写?

# 添加用户tom
ubuntu@VM-0-3-ubuntu:~$ id tom
id: ‘tom’: no such user

ubuntu@VM-0-3-ubuntu:~$ ./adduser.sh -v
adduser tom finished
ubuntu@VM-0-3-ubuntu:~$ cat adduser.sh 
#!/bin/bash
#
DEBUG=0

case $1 in
-v|--verbose)
  DEBUG=1 ;;
esac

useradd tom &>/dev/null
[ $DEBUG -eq 1 ] && echo "adduser tom finished"

生信技能树公益视频合辑:学习顺序是linux,r,软件安装,geo,小技巧,ngs组学!
请猛戳下面链接
B站链接:https://m.bilibili.com/space/338686099

YouTube链接:https://m.youtube.com/channel/UC67sImqK7V8tSWHMG8azIVA/playlists

生信工程师入门最佳指南:https://mp.weixin.qq.com/s/vaX4ttaLIa19MefD86WfUA

学徒培养:https://mp.weixin.qq.com/s/3jw3_PgZXYd7FomxEMxFmw

上一篇 下一篇

猜你喜欢

热点阅读