一:Shell简介
shell脚本是包含系列命令的文本文件,当用户下达指令时,可以读取相应文件并自动执行,大大减少重复性操作,并提供批量处理,自动运维和定时执行任务等功能
二:实例
1.建立sh文件,输出语句
vi test.sh
// #!是声明,声明该脚本需要解释器执行
//在写完脚本推出vi模式后需要用chmod命令赋权,给予文件执行权限,新建文件默认没有执行权限。
2.变量的定义和使用
a.变量定义
a=123
a=‘123’
a=“123”
第一种a=123,单引号‘’和双引号“”都不加是需要值内不包含任何空白符好(例如空格)
第二种a=‘123’和a=’"123"的区别在于,单引号会原封不动的输出单引号内的内容,即使有变量和命令,命令需要用反引号``标记,二双引号“”会把变量或者命令解析以后再输出,比如
#!/bin/bash
url="http://www.baidu.com"
web1='百度网:${url}'
web2="百度网:${url}"
echo $web1
echo $web2
输出结果如下
可以看到变量url在单引号中原封不动的输出,双引号中解析出了值后在输出。
b.变量的输出
shell脚本
运行结果
可以看到首先第一条,输出$ {abc}+aaa+$ {abc},运行得到结果abcaaah23
$ {aaa},输出了aaa的值,为abc,这里很有迷惑性,首先要注意一点,当用到变量的值的时候永远不能少了$ 这个符号,缺了这个符号就只是一个变量名,所以前面aaa=abc只是给aaa赋了一个abc的值,没有加上
的
a
b
c
并
没
有
受
到
前
面
a
b
c
=
123
的
影
响
,
后
面
也
很
明
显
a
a
a
输
出
出
来
就
是
a
a
a
,
变
量
名
跟
值
是
分
开
来
的
a
a
a
,
这
里
也
是
变
量
名
与
变
量
值
在
s
h
e
l
l
中
分
割
的
例
子
,
输
出
并
不
是
a
a
a
的
值
a
b
c
,
就
是
a
a
a
h
23
,
这
里
首
先
的abc并没有受到前面abc=123的影响,后面也很明显aaa输出出来就是aaa,变量名跟值是分开来的 aaa,这里也是变量名与变量值在shell中分割的例子,输出并不是aaa的值abc,就是aaa h23,这里首先
的abc并没有受到前面abc=123的影响,后面也很明显aaa输出出来就是aaa,变量名跟值是分开来的aaa,这里也是变量名与变量值在shell中分割的例子,输出并不是aaa的值abc,就是aaah23,这里首先 {abc},输出变量abc的值,其次有一行代码是abc=${abc/‘1’/‘h’},意思是找到abc的值中1,换成h,因此输出了h23
d
e
f
输
出
为
123
,
这
是
因
为
def输出为123,这是因为
def输出为123,这是因为{!}是一种引用,会追溯代码,aaa=abc,abc=123,所以$def就是123
p
a
t
h
输
出
为
/
t
m
p
,
这
个
涉
及
到
反
引
号
的
作
用
,
p
a
t
h
=
‘
p
w
d
‘
,
反
引
号
的
作
用
是
修
饰
命
令
,
所
以
这
个
p
w
d
是
一
个
命
令
,
在
L
i
n
u
x
中
p
w
d
代
表
文
件
夹
路
径
,
这
个
s
h
e
l
l
文
件
夹
在
t
m
p
目
录
中
,
因
此
path输出为/tmp,这个涉及到反引号的作用,path=`pwd`,反引号的作用是修饰命令,所以这个pwd是一个命令,在Linux中pwd代表文件夹路径,这个shell文件夹在tmp目录中,因此
path输出为/tmp,这个涉及到反引号的作用,path=‘pwd‘,反引号的作用是修饰命令,所以这个pwd是一个命令,在Linux中pwd代表文件夹路径,这个shell文件夹在tmp目录中,因此path的值输出为/tmp