Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出屏幕返回给用户
Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出屏幕返回给用户
Shell 脚本必须要素:
① 脚本文件名字必须以.sh结尾。
② 声明:打开脚本的第一句话必须写上#!/bin/bash(通常#后面的是不会被解析的,但是加上!就是告诉操作系统用什么解释器去解释)。
如何执行一个脚本:
① 以命令方式执行脚本
bash yunjisuan.sh
sh yunjisuan.sh
② 给脚本可执行权限x,然后以脚本的绝对路径方式执行脚本
/root/benet/yunjisuan.sh
脚本里面出现的必须是都是免交互的。如passwd –stdin test1
基本脚本命令:
一、逻辑判断
脚本理论的命令是死的,不会像人一样通过眼睛判断是否可执行。因此,我们需要对脚本的命令进行是否可行的逻辑判断(真/假),判断后在进行命令的执行。
(1)文件测试
通过test –d(f) 来判断目标是目录还是文件
脚本里:test –d /root && cd /root && pwd
-e 判断目标是否存在
-r 判断是否有读权限
-w 判断是否有写权限
-x 判断是否有可执行权限
-z 判断字符串是不是空(空格为不空)
## 我们可以通过特殊方式判断字符串是否为空
(了解)$ {#变量名} =====》输出变量的字符位数如果是0,代表变量为空
判断变量的字符个数:
(2)通过中括号[](逻辑判断符号)来判断目标是否是目录还是文件,还能进行字符串判断以及数字大小的比对。
[ -d /root/benet ] 判断是否为目录
[ -f /root/benet/yunjisuan.sh ] 判断是否为文件
[ $变量 == “”“字符串” ] 进行字符串是否向相等判断
[ $变量 – gt(lt,le,ge,eq) 数字 ] 进行数字大小判断
-gt (great than)代表大于
-lt (less than)代表小于
-eq 代表等于
-ge 是大于等于
-le 是小于等于
== 是等号,x == 3,判断
= 是赋值(赋值语句,数字可以不加“”,但是字符串加“”)
结论:以上判断均可通过$?进行成功与否的取值,0代表判断为真,非0代表判断为假。
(3)关于逻辑与&& 逻辑或||
&&符号的左边为真(0),方可执行右边,否则右边不执行
|| 符号左边为假(非0),方可执行右边,否则右边不执行
注:变量名只能由字母、数字、下划线组成,且以字母开头。逻辑与可以连接很多,用逻辑或(在最右边)就不要在用逻辑与了,造成逻辑混乱
shell 脚本的意义:
通过命令行解析的方式帮我们自动去执行我们设定好的代码;假如我们把脚本挂到定时任务里,那就是自动的在某个没有人的时间里自动触发干活程序。
二、关于脚本交互式输出模式:
(1)我们可以通过read命令进行交互式输入
例如:read 变量 或者 read –p “文本提示” 变量
三、命令行传参
$# 代表传给脚本的参数的个数
$* 代表横向罗列参数
$0 文件的执行路径
$1..$n 对应传入的不同的参数
$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同
注:但是当$@和$*被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。