尚硅谷shell脚本

一:shell编程

1.1 shell编程快速入门-shell脚本的执行方式

脚本格式要求

脚本以#!/bin/bash开头

创建一个shell脚本,输出hello world!

cat /root/shell/hello.sh
#!/bin/bash
echo “hello world!”
chmod 744 hello.sh
./hello.sh                  #相对路径
/root/shell/hello.sh        #绝对路径

方式2(sh+脚本)

1.2shell变量

shell变量的介绍

1)Linux Shell中的变量分为 系统变量和用户自定义变量

2)系统变量:\(HOME ,\)PWD ,\(SHELL,\)USER等等

比如echo $HOME等等

image-20201221140248484

3)显示当前shell中所有变量: set

1.3shell变量的定义

image-20201221140617166

基本语法:

1)定义变量:变量=值

2)撤销变量: unset变量

3)声明静态变量 readonly变量不能unset

unset :取消当前变量

image-20201221141113870

1.4定义变量的规则

1)变量名称可以由字母,数字和下划线组成,但是不能以数字开头。

2)等号两侧不能有空格

3)变量名称一般习惯为大写

将命令的返回值赋给变量(重点)

1)A=ls-la反引号,运行里面的命令,并把结果返回给变量A

RESULT=`ls -l /home`
echo $RESULT

2)A=$(ls-la)等价于反引号

MY_DATE=$(date)
echo $MY_DATE

1.5设置环境变量

基本语法

1)export 变量名=变量值 (功能描述,将shell变量输出为环境变量)

2)source 配置文件 (功能描述:让修改后的配置信息立即生效 )

3)echo $变量名 (功能描述: 查询环境变量的值)

快速入门

1)在/etc/profile文件中定义TOMCAT_HOME环境变量

2)查看环境变量TOMCAT_HOME的值

3)在另外一个shell程序中使用TOMCAT_HOME

注意:在输出TOMCAT_HOME环境变量前需要让其生效

source /etc/profile

多行注释
!<<!
RESULT
echo
MY_DATE
echo
!

1.6位置参数变量

介绍

当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以用到位置参数变化,比如, ./myshell.sh 100 200, 这个就是一个执行shell的命令行,可以在myshell脚本中获取到

基本语法:

  $0
  $n
  $*
  $@
  $#

预定义变量

基本介绍

就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用

基本语法

 $$  当前进程的进程号
 $!  后台运行的最后一个进程的进程号(PID)
 $?  最后一次执行的命令的返回状态,如果这个变量的值为0,证明上一个命令正确执行,如果这个变量的值为非0,证明上个命令执行不正确

image-20201221182639645

运算符:

基本语法

 1):”$((运算式))”或“$[运算式]”

 2) expr m + n

 注意: expr运算符间要有空格

 3)  expr m - n

 4)  expr \*,/,% 乘,除,取余

请求出两个参数的和

 SUM=$[$1+$2]

判断语句

基本语法

非空返回true,可使用$?验证(0为true,>1为false)

应用实例

[atguigu]       返回true
[]              返回false
[condition]&&echo OK ||echo notok   条件满足,执行后面的语句

条件判断

常用判断条件

1)两个整数的比较

=字符数比较

-lt小于

-le小于等于

-eq等于

-gt大于

-ge大于等于

-ne不等于

2)按照文件权限进行判断

-r 有读的权限

-w 有写的权限

-x 有执行的权限

3)按照文件类型判断

-f 文件存在并且是一个常规的文件

-e 文件存在

-d 文件存在并是一个目录

应用实例

判断ok 是否等于ok

if  [   “ok”  =  “ok”  ]
then
       echo "equal"
fi

23是否大于等于22

if  [ 23 -gt 22 ]
then
       echo "大于"
fi       

流程控制

if判断

基本语法

if[条件判断式];then

程序

fi

或者

if[条件判断式]

then

程序

elif[条件判断式]

then

程序

fi

注意事项: (1)[条件判断式],中括号和条件判断式之间必须有空格(2)推荐使用第二种方式

case语句

case $变量名 in

“值1”)

;;

“值2”)

如果变量的值等于值2,则执行程序2

;;

....省略其他分支.....

如果变量的值都不是以上的值,则执行此程序

;;

esac

#! /bin/bash
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other"
;;
esac 

for循环

基本语法1

for变量in 值1 值2 值3

do

​ 程序

done

#!/bin/bash
#使用$*
for i in "$*"
do 
     echo "the num is $i"
done
chmod 744 testFor.sh
使用$@
for j in "$@"
do  
echo "the num is $j"
done
posted @ 2021-03-06 14:32  上善若水~小辉  阅读(213)  评论(0编辑  收藏  举报