初识Shell
-
shell是linux系统内核的一个外壳程序。
-
查看当前的shell工具
echo $BASH
输出
表示当前是一个bash的环境。
-
编写第一个shell脚本 first_shell.sh
#!/bin/bash #FileName: first_shell.sh #Use: auto echo Hello World! #By authors: wl_it 2020.05.05 echo "Hello World!"
保存并修改执行权限 chmod u+x first_shell.sh
或者不改权限 使用 /bin/bash first_shell.sh 执行
说明:
#!/bin/bash 固定写法 表示脚本执行程序的路径#FileName: first_shell.sh
#Use: auto echo Hello World!
#By authors wl_it 2020.05.05上面三行是注释
echo “Hello World!” 真正的命令
Shell变量
-
Shell变量分为局部变量和环境变量
-
定义和使用局部变量
#!/bin/bash #use: 局部变量的使用 #By authors: wl_it 2020.05.05 #name=jack牛 #注释可以跟在后面 name="jack 牛" #如果值需要空格 要用双引号引起来 echo "My name is $name" echo $UID #使用系统环境变量 echo $PWD #使用系统环境变量
-
路径参数
#!/bin/bash #Use: 路径参数测试 #By authors: wl_it 2020.05.05 echo $0 #打印脚本文件名称 echo $1 #打印第一个参数 echo $2 #打印第二个参数
执行
/bin/bash path_val.sh param1 param2
-
? , ?, ?,*,$#的含义
#!/bin/bash #Use: 测试 $? $* $#的含义 #By authors: wl_it 2020.05.05 echo "\$0 is $0" #打印脚本文件名称 echo "\$1 is $1" #打印第一个参数 echo "\$2 is $2" #打印第二个参数 echo "\$? is $?" #打印上一个命令是否出错 0表示上一个命令正确 否则失败 echo "\$* is $*" #打印所有参数 echo "\$# is $#" #打印参数个数
执行
/bin/bash val2.sh param1 param2
-
打印带颜色的信息
echo -e "\033[32mtest....\033[0m"
-
打印一个菜单选择
#!/bin/bash #Use: 打印一个菜单选择 #By authors: wl_it 2020.05.05 echo -e "\033[32mPlease Enter a number:\033[0m" echo "1)安装Java" echo "2)安装Mysql" echo "3)安装Tomcat" echo "4)安装Redis" echo -e "\033[32m---------------------------------\033[0m"
执行后
Shell条件判断
一、if条件判断
-
if 比较大小
#!/bin/bash #Use: 测试if条件判断语句 #By authors: wl_it 2020.05.05 num1=100 num2=200 #两个嵌套小括号表示比较 if (($num1 > $num2)); then echo "$num1 大于 $num2" else echo "$num1 小于 $num2" fi
执行
-
if判读目录是否存在
#!/bin/bash #Use: if判断目录是否存中 不存在就创建 #Author: wl_it #Date: 2020.05.05 DIR=/tmp/20200505 #使用[] -d 判断目录是否存在 #[]内的参数之间应该有空格 if [ ! -d $DIR ];then mkdir -p $DIR echo -e "\033[32m$DIR创建成功!\033[0m" else echo -e "\033[32m $DIR目录已经存在\033[0m" fi
连续执行两次
-
if判断文件是否存在
#!/bin/bash #Use: if判断文件是否存在 不存在就创建并添加内容 存在则打印文件内容 #Author: wl_it #Date: 2020.05.05 FILE=/tmp/test.txt #if判断文件是否存在 [ -f ] if [ ! -f $FILE ]; then echo "OK" >> $FILE echo -e "\033[32m创建文件成功\033[0m" else echo -e "\033[32m----------------\033[1m" cat $FILE fi
连续执行两次
-
if判断数值大小
#!/bin/bash #Use: if判断数值大小 #Author: wl_it #Date: 2020.05.05 score=$1 #判断参数是否为null if [ -z $score ];then echo "Please Enter score" exit fi #两个[]嵌套表示数值比较 if [[ $score -gt 90 ]]; then echo "Very Good!!" elif [[ $score -gt 80 ]]; then echo "Good!!" elif [[ $score -ge 60 ]]; then echo "Pass!!" else echo "No Pass!!" fi
执行情况