shell编程
1.shell命令解释器
Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序等。 用户每输入一条命令,Shell就执行一条。这种从键盘输入命令,就可以立即得到回应的对话方式,称为交互的方式当命令或程序语句不在命令行下执行,而是通过一个程序文件来执行时,该程序文件就被称为Shell脚本。 在Shell脚本里内置了很多命令、语句及循环控制,然后将这些命令一次性执行完毕,这种通过文件执行脚本的方式称为非交互的方式。 Shell脚本语言很适合用于处理纯文本型的数据,而Linux系统中几乎所有的配置文件、日志文件,以及绝大对数的启动文件都是纯文本类型的文件, 用户可以用shell帮助操作管理Linux内核
2.体验:
[root@localhost shell]# vi shell.sh
[root@localhost shell]# chmod 744 shell.sh
[root@localhost shell]# ll
总用量 4
-rwxr--r--. 1 root root 33 4月 8 18:57 shell.sh
[root@localhost shell]# ./shell.sh
hello,world
[root@localhost shell]#
shell.sh文件内容:
#!/bin/bash
echo "hello,world"
我们编写.sh的shell文件,然后进行赋予执行权限,执行
或者不用给可执行权限执行
sh shell.sh
3.shell变量
系统变量
#!/bin/bash
echo "hello,world"
echo "PATH=$PATH"
执行
[root@localhost shell]# ./shell.sh
hello,world
PATH=/opt/jdk1.7.0_79/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
用户自定义变量
#!/bin/bash
A=100
echo "A=$A"
unset A
echo "A=$A"
[root@localhost shell]# vi shell.sh
[root@localhost shell]# ./shell.sh
A=100
A=
[root@localhost shell]#
unset销毁变量
$引用这个变量的值
静态变量 不能unset
[root@localhost shell]# cat shell.sh
#!/bin/bash
readonly y=88
echo "y=$y"
结果
[root@localhost shell]# ./shell.sh
y=88
[root@localhost shell]#
变量定义 和 变量结果的获取
=两侧不能有空格
变量不以数字开头
取值用$
#!/bin/bash
MY_DATE=$(date)
echo "MY_DATE=$MY_DATE"
测试:
[root@localhost shell]# vi shell.sh
[root@localhost shell]# ./shell.sh
MY_DATE=2021年 04月 08日 星期四 19:21:57 CST
[root@localhost shell]#
环境变量
1.定义后要export导出为环境变量
2.定义完后要刷新所在的资源文件 source /路径+文件名
在profile文件中定义
TOMCAT_HOME=/opt/etc/tomcat
export TOMCAT_HOME
查询
[root@localhost etc]# vi profile
[root@localhost etc]# source /etc/profile
[root@localhost etc]# echo $TOMCAT_HOME
/opt/etc/tomcat
[root@localhost etc]#
参数处理
#!/bin/bash
echo "$0" "$1" "$2"
echo "$*"
echo "$@"
[root@localhost shell]# ./shell.sh 23 23 45
./shell.sh 23 23
23 23 45
23 23 45
[root@localhost shell]#
预定义变量 事先定义好的变量
$$ 当前进程号
$! 后台运行的最后一个进程号
$? 最后一次执行命令的返回状态 不是0就代表成功
./shell2.sh & 以后台方式执行脚本
[root@localhost shell]# cat shell.sh
#!/bin/bash
echo "当前的进程号=$$"
./shell2.sh