下篇 https://blog.csdn.net/weixin_44284599/article/details/104663039
0.shell 编程快速入门
#单行注释
:<<!
多行注释
!
1.vim myShell.sh
2.编写
#!/bin/bash
echo "hello world!"
3.执行
方式1:修改权限+x
chmod 744 myShell.sh
相对路径: ./myShell.sh
绝对路径: /root/shell/myShell.sh
方式2(不推荐):
sh ./myShell.sh
1.shell 的变量
1.1介绍
Linux Shell 中的变量分为,系统变量和用户自定义变量。
系统变量:$ HOME、$ PWD、$ SHELL、$ USER 等等
自定义变量:变量=值
echo "PATH=$PATH" 输出系统变量
echo "user=$USER"
[root@Centos7 shell]# set 显示shell中所有变量
1.2shell 变量的定义
A=100 定义变量
echo "A=$A" 引用变量
unset A 撤销变量
echo "A=$A" 再次引用发现以及失效
readonly A 定义静态变量(静态变量不能unset)
echo "A=$A" 引用变量
1.3定义变量的规则
1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
2)等号两侧不能有空格
3)变量名称一般习惯为大写
1.4将命令的返回值赋给变量(重点)
1) A=ls -la
反引号,运行里面的命令,并把结果返回给变量 A
2) A=$(ls -la) 等价于反引号
RESULT=`ls -l /home`
echo $RESULT
DATE=$(date)
echo "date=$DATE"
2.设置环境变量(超全局变量,可以被很多sh使用)
2.1基本语法
1) export 变量名=变量值 (功能描述:将 shell 变量输出为环境变量)
2) source 配置文件 功能描述:让修改后的配置信息立即生效
2) echo KaTeX parse error: Expected 'EOF', got '#' at position 60: …@Centos7 shell]#̲ vim /etc/profi…TOMCAT_HOME"
3.位置参数变量
3.1介绍
当我们执行一个 shell 脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量,比如 : ./myshell.sh 100 200 , 这个就是一个执行 shell 的命令行,可以在 myshell 脚本中获取到参数信息
3.2基本语法
$n (功能描述:n 为数字,$0 代表命令本身, $ 1-$ 9 代表第一到第九个参数,十以上的参数,十 以上的参数需要用大括号包含,如${10})
$ * (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
$ @(功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
$ #(功能描述:这个变量代表命令行中所有参数的个数)
3.3实例
[root@Centos7 shell]# ./myShell.sh 1 2
echo "$0 $1"
./myShell.sh 1
echo "$*"
1 2
echo "$@"
1 2
echo "参数个数: $#"
参数个数: 2
4.预定义变量
4.1介绍
就是 shell 设计者事先已经定义好的变量,可以直接在 shell 脚本中使用
4.2基本语法
$$ (功能描述:当前进程的进程号(PID))
$! (功能描述:后台运行的最后一个进程的进程号(PID))
$? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令正确执 行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不 正确了
4.3实例
echo "当前的进程号=$$"
#后台方式执行Hello.sh
./Hello.sh &
echo "最后的进程号=$!"
echo "执行的=$?"
[root@Centos7 shell]# ./myShell.sh
当前的进程号=6510
最后的进程号=6511
执行的=0
5.运算符
5.1基本语法
1) “
(
(
运
算
式
)
)
”
或
“
((运算式))”或“
((运算式))”或“[运算式]”
2) expr m + n 注意 expr 运算符间要有空格
3) expr m - n
4) expr *, /, % 乘,除,取余
5.2实例
#第一种方式$()
RESULT1=$(((2+3)*4))
echo "result1=$RESULT1"
#第二种方式[](推荐使用)
RESULT2=$[(2+3)*4]
echo "result2=$RESULT2"
#第三种方式expr(使用的时候注意加入空格)
TEMP=`expr 2 + 3`
RESULT3=`expr $TEMP \* 4`
echo "result3=$RESULT3"
#求两个参数的和
SUM=$[$1+$2]
echo "sum=$SUM"
[root@Centos7 shell]# ./demo.sh 1 2
result1=20
result2=20
result3=20
sum=3