文章目录
1.脚本编程shell
shell 一个能编写代码的文件编辑器和一个能解释执行的脚本解释器
Linux 的 Shell 种类众多,常用的有:
Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)
运行流程
chmod +x ./test.sh
sh ./test.sh
./test.sh
2.常用的脚本关键字
echo | 打印文字到屏幕 |
---|---|
exec | 执行另一个 Shell 脚本 |
read | 读标准输入 |
expr | 对整数型变量进行算术运算 |
test | 用于测试变量是否相等、 是否为空、文件类型等 |
exit | 退出 |
脚本例子流程
>su - hr
>vi test.sh //脚本文件后缀 .sh
#!/bin/bash // #!是⼀个约定的标记,它告诉系统这个脚本需要什么解释器来执⾏,即使⽤哪⼀种 Shell
echo “hello world !”
>chmod +x test.sh
>sh ./test.sh
>hello world !
调用变量
$变量申明符号
3.变量类型
3.1.用户自定义变量
>vi custom_r.sh
#!/bin/bash
name=dd
echo $name
readonly name
name=xx
>echo $name
3.2.预定义变量
$0 | 脚本文件名 |
---|---|
$1-9 | 第 1-9 个命令行参数名 |
$# | 命令行参数个数 |
$@ | 所有命令行参数 |
$* | 所有命令行参数 |
$? | 前一个命令的退出状态,可⽤于获取函数返回值 |
$$ | 执行的进程 ID |
vi predef.sh
#!/bin/bash
echo "print $"
echo "\$0 = $0"
echo "\$1 = $1"
echo "\$2 = $2"
echo "\$# = $#"
echo "\$@ = $@"
echo "\$* = $*"
echo "\$$ = $$"
echo "\$? = $?"
>chmod +x predef.sh
>./predef.sh 1 2 3 4
>./predef.sh a b c d
3.3. 环境变量
环境变量默认就存在,常用的有下面这几个:
HOME | 用户主目录 |
---|---|
PATH | 系统环境变量 PATH |
TERM | 当前终端 |
UID | 当前用户 ID |
PWD | 当前做目录,绝对路径 |
>vi test_env.sh
#!/bin/bash
echo "print env"
echo $HOME
echo $PATH
echo $TERM
echo $PWD
echo $UID
>chmod +x test_env.sh
>sh test_env.sh
4.unset 删除变量
readonly 标记为只读变量
export 指定全局
4.1.运算符号
+ - * / | 分别为 加、减、乘、除 |
---|---|
$ ! | AND、OR、NO |
4.2.整数比较
eq 等于,如:if [ “a"−eq" a" -eq "a"−eq"b” ]
-ne 不等于,如:if [ “a"−ne" a" -ne "a"−ne"b” ]
-gt大于 ,如:if [ “a"−gt" a" -gt "a"−gt"b” ]
-ge 大于等于,如:if [ “a"−ge" a" -ge "a"−ge"b” ]
-lt 等于,如:if [ “a"−lt" a" -lt "a"−lt"b” ]
-le 小于等于,如:if [ “a"−le" a" -le "a"−le"b” ]
< 小于(需要双括号),如:((“a"<" a" < "a"<"b”))
<= 小于等于(需要双括号),如:((“a"<=" a" <= "a"<="b”))
> 大于(需要双括号),如:((“a">" a" > "a">"b”))
>= 大于等于(需要双括号),如:(("a">=" a" >= "a">="
字符串比较
= 等于,如:if [ “a"=" a" = "a"="b” ]
== 等于,如:if [ “a"==" a" == "a"=="b” ],与=等价
5.常见运算
m=$[ m + 1 ]
m=expr $m + 1 # ` 字符包起来 expr 全局变量
let m=m+1
m=$(( m + 1 ))
vi add_one.sh
#!/bin/bash
m=1
m=$[ m + 1 ]
echo $m
m=`expr $m + 1`
echo $m
let m=m+1
echo $m
m=$(( m + 1 ))
echo $m
脚本例子
#!/bin/bash
a=10
b=20
if [ $a == $b ]
then
echo "a=b"
else
echo "a!=b"
fi
read -t 30 -p "input :" x
if [ $x == 5 ]
then
echo "x is 5"
else
echo "x is not 5"
fi
6.数组
所谓数组,是有序的元素序列。
[name] 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。
组成数组的各个变量称为数组的分量,也称为数组的元素
x=1
echo $x
days=([0]=Sun [1]=Mon [2]=Tue [3]=Wed [4]=Thu // 数组名字=([定义]=元素)
[5]=Fri [6]=Sat)
echo ${days[$x]}
echo ${days[4]}
echo ${days[5]}