https://blog.csdn.net/hanchao5272/article/details/86429645
执行shell脚本的几种方法:
1、第一种sh、bash法:sh xxx.sh;
2、第二种路径法:直接输入该脚本的绝对路径或相对路径。 前提是要给脚本赋权 chmod 755 xxx.sh
/home/admin/xxx.sh 或者进入admin目录下 ./xxx.sh
3、第三种source法: source xxx.sh; (相当于相对路径执行 ./xxx.sh)
一般写shell脚本,在第一行会输入 #!/usr/bin/bash 这个是解释用什么解释器来执行该脚本的意思,解释器的启动位置。
一般解释器都放在/usr/bin目录下,上面可以直接写 #!/usr/bin。 也有一些机器可能是要写#!/bin/bash,看情况了。
单行注释 行首加 # 符号,就仅注释该行。 如 #123
多行注释 比较少用。 可以进入可视化模式,一次性在行首添加 # 符号实现注释
:<< 自定义标记
注释内容1
注释内容2
自定义标记
说明,自定义标记,可以随意,如abc。前后要一样。
变量是数据的载体,存放数据;调用的时候,如调用变量a,可以写${a} 或 $a 或 "${a}"。shell是弱类型语言,有多种格式。
字符串: a="abc" --要用引号,单引号或双引号均可
数值: b=10
变量修改:重新赋值即可修改,如b=12 ,输出时就不再是10了。
变量清除: unset a
双引号和单引号的区别:如 a="${b}" a='{b}' (其中b=12),结果返回:前者a=12,后者a={b}
使用双引号,赋的是变量的值;
使用单引号,赋的是单引号内的所写内容。
单引号属于强引用,它会忽略所有被引起来的字符的特殊处理,被引用起来的字符会被原封不动的使用。
https://www.cnblogs.com/panhongyin/p/5603508.html --单引号、双引号、反引号
反引号和$()引起来的字符会被当做命令执行后替换原来的字符
变量分 本地变量 (局部变量,当前shell使用)、全局变量(也叫静态变量,跨shell使用)、内置变量(特殊变量)。
一般写的变量,都是本地变量。
把本地变量变成全局变量,用export 变量名,即可实现把本地变量导出为全局变量。全局变量,建议变量名都是大写。
变量查询:env|grep 变量名,env可以查看所有的变量
(思考:临时变量、永久变量?)
https://mp.csdn.net/console/editor/html/104441993
$1 第一个参数 $2 第二个参数 以此类推(最大是$9) $0是脚本名称 $*所有参数 $#参数个数
sh xxx.sh 参数1 参数2 参数3
变量是变化的,可以用参数的方式进行传递。就有给 每个参数 都有个 固定的内置变量。
传参以及解析参数的过程,这个参数可以成为内置变量。
动态获取数据的方式:传参 ,键盘输入。
read -p "please input:" myvar ,然后输入内容,回车即可。 echo $myvar ,就会输出刚输入的内容。
变量名=`命令`
result=`ls`
echo ${result} 就会返回ls的结果
+ - * / % 等算术运算. /是只取商值(整数) %取余数
echo "$((a + b))" --》 $((数学表达式))
返回布尔值,即true或false。(0是true,1是false)
-gt 大于 -lt 小于 -ge 大于等于 -le 小于等于 -eq 等于 -ne 不等于 (不能直接用 <>=之类的符号,得用参数的方式)
echo $? 返回上个命令行执行的结果,0是true,1是false。
[ $a -gt $b ] 括号内左边和右边各有一个空格。
与或非。返回布尔值,即true或false。(0是true,1是false)
-a 代表and -o 代表or ! 代表非
[ $a -gt $b -a $b -le $c ] a大于b,并且b小于c。
[ ! $a -gt $b ] a不大于b
判断两个字符串内容是不是一样。返回布尔值,即true或false。(0是true,1是false)
= 相等 != 不等 -z 判断字符串内容长度是否为0
[ -z $a ] a变量是否为空内容
[ $a != $b ] 两个值是否不相等
返回布尔值,即true或false。(0是true,1是false)
-d 判断是否为目录
-f 判断是否为文件
-e 判断是否存在该文件或文件夹
[ -d ${mydir} ]
test -参数 路径 等价于 [ -参数 路径 ]
视频截图: