Shell
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Shell脚本入门
1.1 脚本格式
脚本以==#!/bin/bash==开头(指定解析器)
1.2 执行脚本文件
下图示例为常用的脚本执行方法
source 脚本文件名也是常用的一种执行方法
Shell变量
2.1 常用系统变量
HOME, \PWD $SHELL ,$USER
2.2 常见操作
- 查看系统变量的值
echo $HOME
- 显示当前Shell中所有的变量
set
2.3 shell变量的定义
- 基本语法
- 定义变量:变量名=值
- 撤销变量: unset 变量
- 声明静态变量 : readonly变量,注意:不能unset
- 定义变量的规则
- 变量的名称可以由字母,数字和下划线组成,但是不能以数字开头
- 等号两侧不能有空格
- 变量名称一般习惯为大写
2.4 设置环境变量
- 基本语法
- export 变量名=变量值(将shell变量输出为环境变量/全局变量)
- source 配置文件 (让修改后的配置信息立即生效)
- echo $变量名 (查询环境变量的值)
在输出TOMCAT_HOME 环境变量前,需要让其生效 source/etc/profile
- shell脚本的多行注释
:<<!
内容
!
2.5 位置参数变量
shcode脚本
#!/bin/bash
echo "0=$0 1=$1 2=$2"
echo "所有的参数:$*"
echo "$@"
echo "参数的个数=$#"
终端展示
2.5 预定义变量
2.6 运算符
- 基本语法
- “ ((运算式))” 或“\[运算式]” 或者expr m + n //expression
- 注意expr运算符间要有空格,如果希望将expr的结果赋给某个变量格式为 ==RES=`expr 运算式`==
- expr m - n
- expr \*, /, % 乘,除,取余
2.7分支语句
- 判断语句基本语法
[ condition ] (注意condition前后都要有空格)
非空返回true,可使用$?验证(0位true,>1为false)
常用的判断条件
| 判断符号 | 判断语义 |
|---|---|
| = | 字符串比较 |
| ==两个整数的比较== | |
| -lt | 小于 |
| -le | 小于等于 |
| -eq | 等于 |
| -gt | 大于 |
| -ge | 大于等于 |
| -ne | 不等于 |
| ==按照文件权限进行判断== | |
| -r | 有读的权限 |
| -w | 有写的权限 |
| -x | 有执行的权限 |
| ==按照文件类型进行判断== | |
| -f | 文件存在并且是一个常规的文件 |
| -e | 文件存在 |
| -d | 文件存在并是一个目录 |
- 基本语法
if [ 条件判断式 ]
then
代码
elif [ 条件判断式 ]
then
代码
fi
2.8 case语句
- 基本语法
下方为输入数字判断星期
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other..."
;;
esac
2.9 for循环
- 从1加到指定变量示例
SUM=0
for(( i=1; i<=$1; i++))
do
SUM=$[$SUM+$i]
done
echo "总和SUM=$SUM"
- * 与\@的区别
for i in "$@"
do
echo "num is $i"
done
$*执行结果
$@执行结果
2.10 while循环
从1加到指定数
SUM=0
i=0
while [ $i -le $1 ]
do
SUM=$[$SUM+$i]
i=$[$i+1]
done
echo "执行结果=$SUM"
while 和[有空格 , 条件判断式和[ 也有空格
read获取控制台输入
十秒内输入一个数,并打印出来
read -t 10 -p "请输入一个数NUM2=" NUM2
echo "你输入的NUM2=$NUM2"
-p :指定读取值时的提示符
-t :指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待
Shell函数
系统函数
- basename
去除文件名前缀,.txt 表示去除的后缀
basename /home/aaa/test.txt .txt
结果为test
- dirname
返回拿到文件名前面的路径部分
自定义函数
SUM=0
# 定义函数getSum
function getSum() {
SUM=$[$n1+$n2]
echo "和=$SUM"
}
#输入两个值
read -p "请输入一个数n1=" n1
read -p "请输入一个数n2=" n2
#调用自定义函数
getSum $n1 $n2