脚本格式要求
1.脚本以 #!/bin/bash 开头 (表示用 bash 来进行解析)
2.脚本需要有可执行权限 chmod 744 [文件名]
3.也可以不给权限直接执行 sh ./myShell.sh
Shell 变量
系统变量
$HOME
$PWD
$SHELL
$USER
等等...... 输出预定义系统变量 echo "PATH=$PATH"
用户自定义变量
定义A变量 A=100
撤销A变量 unset A
输出A变量 echo "A=$A"
定义静态A变量 readonly A=99
输出静态A变量 echo "A=$A"
静态变量不能 unset
显示所有shell变量并分页显示 set | more
把命令的结果返回给变量 方式一 A=`ls -la` 方式二 A=$(ls -la) 等价于反引号
环境变量
1.在/etc/profile文件中定义TOMCAT_HOME环境变量
TOMCAT_HOME=/opt/tomcat
export TOMCAT_HOME
export 变量名=变量值 将shell变量输出为环境变量
2.刷新文件
source 配置文件 让修改后的配置信息立即生效
echo $变量名 查询输出环境变量的值
多行注释
:<<!
!
单行注释
#
位置环境变量
$n n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的用${10}表示
$* 代表命令行所有的参数,把所有参数看成一个整体
$@ 代表命令行所有的参数,把每个参数区分对待
$# 代表参数个数
预定义变量
$$ 当前进程的进程号PID
$! 后台运行的最后一个进程的进程号PID
$? 最后一次执行的命令的返回状态 0=正确执行,非0=不正确
运算符
$((运算式)) 或 $[运算式]
expr m + n 注意expr运算符前后要有空格
expr \*,/,% 乘,除,取余
求两个参数的和 SUM=$[$1+$2]
条件判断
[ iftest ] 不为空返回true
[] 为空返回false
[ iftest ] && echo ok || echo notok 条件满足,执行后面的语句
if [ 条件判断式 ] 注意条件判断式前后要有空格
1.两个整数的比较
= 字符串比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
2.按照文件权限进行判断 [ -r 文件 ]
-r 有读的权限
-w 有写的权限
-x 有执行的权限
3.按照文件类型进行判断
-f 文件存在并且是一个常规文件
-e 文件存在
-d 文件存在并是一个目录
案例:
与 方式一 -a 方式二 &&
或 方式一 -o 方式二 ||
非 !
流程控制
if [ 条件判断式 ] 条件判断式两边必须有空格
if [ 条件判断式 ]
then
程序
fi
或
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
fi
case
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
for循环,语法一
for 变量 in 值1 值2 值3
do
程序
done
案例:打印命令行输入的参数 【使用$* $@】
for循环,语法二
for((初始值;循环控制条件;变量变化))
do
程序
done
案例:从1加到100的值输出显示
while循环
while [ 条件判断式 ]
do
程序
done
读取控制台输入
read (选项) (参数)
选项:
-p 指定读取值时的提示符
-t 指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待
案例:
参数:
变量,用于接收用户输入
函数
系统函数
basename [路径] [后缀] 返回完整的路径最后 / 的部分,常用于获取文件名,如果输入后缀则获取到的文件名不包含后缀
dirname 返回完整路径最后 / 前面的部分,常用于返回路径部分
自定义函数
自定义函数不需要形参
function 函数名(){
程序
}
案例:计算两个参数的和
网友评论