shell脚本编制(1)基础

shell脚本基础

Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了Linux/Unix下的命令。(来自百度搜索)

编写第一个shell脚本

基本格式如下
[root@CentOS7-02 shell]# vim shell.sh 前面的shell可以随意,后缀必须为**.sh**
在这里插入图片描述
使用脚本
./ 方式必须加执行权限
[root@CentOS7-02 shell]# chmod +x shell.sh
[root@CentOS7-02 shell]# ./shell.sh
sh方式可以不加执行权限
[root@CentOS7-02 shell]# sh shell.sh

重定向与管道操作

1.重定向操作
1)重定向输出 覆盖文件
>
[root@CentOS7-02 shell]# uname -p > ker.txt
[root@CentOS7-02 shell]# cat ker.txt
x86_64
>>
[root@CentOS7-02 shell]# uname -r >> ker.txt
[root@CentOS7-02 shell]# cat ker.txt
x86_64
3.10.0-693.el7.x86_64 这是后来追加的

2)重定向输入 (将接受途径改为指定文件),
[root@CentOS7-02 shell]# vim pass.txt
1234
[root@CentOS7-02 shell]# touch zhangsan
[root@CentOS7-02 shell]# passwd --stdin zhangsan < pass.txt

3)错误重定向
[root@CentOS7-02 shell]# tar aaa /etc/passwd 2> 123.log (aaa是瞎写的不对的)
[root@CentOS7-02 shell]# cat 123.log
tar: 您必须从"-Acdtrux"或是"–test-label"选项中指定一个
请用“tar --help”或“tar --usage”获得更多信息。 (这些是报错信息)
如果要追加错误使用 2>>
也可以使用**&>** 忽略所有正确或错误信息

2.管道操作 ( 管道符号左侧的命令,将作为右侧命令的处理对象)
[root@CentOS7-02 shell]# df -hT | grep "/$"
/dev/mapper/centos-root xfs 17G 1.4G 16G 8% /

使用Sehll变量

1.自定义变量

1)定义自己的变量 (左边是变量名,右边是变量值)
aaa=123
bbb=456

2)查看变量的值 (echo命令查看加上 变量名前加$符号)
[root@CentOS7-02 shell]# echo $aaa
123
[root@CentOS7-02 shell]# echo $bbb
456

3)变量赋值的特殊操作
(1)双引号
双引号起界定字符串作用,特别是当要赋值的内容包含空格是,必须以双引号括起来
,其他情况双引号可以省略。

注意这里的引号是英文输入法的引号这里显示的不对
[root@CentOS7-02 shell]# PYTE=pthon 2.6.1 (错误)
-bash: 2.6.1: 未找到命令
[root@CentOS7-02 shell]# PYTE=“python 2.7.1” (正确)
也可以变量引用
[root@CentOS7-02 ~]# aaa=111
[root@CentOS7-02 ~]# bbb="123 $aaa"
[root@CentOS7-02 ~]# echo $bbb
123 111

(2)单引号
当赋值的内容包括 \ ," $ 等特殊符号时,应该使用单引号括起来
[root@CentOS7-02 ~]# sqlserver=‘sqlserver $ver’ (不是变量引用了,直接显示)
[root@CentOS7-02 ~]# echo $sqlserver
sqlserver $ve

(3) 反撇号
反撇号主要用于命令替换,允许将执行某个命令的屏幕输出结构赋值给变量
[root@CentOS7-02 ~]# ls=`ls /`` (注意这里一个一边只有一个反撇号右边我多加了一个,要不这样的话这个写博客的编辑器会识别成代码)
[root@CentOS7-02 ~]# echo $ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin shell srv sys tmp usr var

(4)read命令
read也可赋值,交互模式的
[root@CentOS7-02 ~]# read yur
abc :注意这里是变量的值,可以自己写的,所以叫交互模式
[root@CentOS7-02 ~]# echo $yur
abc

4)设置变量的作用范围
默认情况下,新定义的变量只在当前shell环境中有效,是局部变量
当进入子程序或新的子shell环境中无法使用

在这里插入图片描述

5)数值的运算
+:加法
乘法 是\加*
%:减法
/:除法
%:求余数

[root@CentOS7-02 ~]# X=11
[root@CentOS7-02 ~]# Y=11
[root@CentOS7-02 ~]# expr $X + $Y
22
[root@CentOS7-02 ~]# expr $X - $Y
0

特殊的Shell变量

1)环境变量
环境变量指定是出于运行的需要而由linux系统提前创建的一类变量,主要作用是设置用户的工作环境,包括用户宿主目录,命令查找路径等"

例如PATH变量设置可执行程序的默认搜索路径
进入别的目录下随意写个脚本(不会的按我第一张图片里的写)
在这里插入图片描述

2)位置变量
为了在使用Shell脚本程序时,更方便通过命令行为程序提供操作参数
ls -lh /boot
ls 是$0 -lh就是$1 /boot就是$3 (命令本身是$0其他的依次排)
代码如下
在这里插入图片描述
[root@CentOS7-02 ~]# chmod +x add.sh
[root@CentOS7-02 ~]# ./add.sh 12 12
12 + 12 = 24

3)预定义变量
(预定义变量是由bash预先定义好的一类特殊变量,用户只能使用预定于变量,而不创建新的预定于变量)

$#:表示命令行中的位置参数的个数
$*:表示所有位置的参数
$?:表示前一条命令的返回状态,返回0为正常,其他非0值表示不正确
$0:表示当前执行的脚本或程序的名称

创建.sh文件 代码如下
在这里插入图片描述
验证在这里插入图片描述

实验完毕

发布了54 篇原创文章 · 获赞 57 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_45308292/article/details/99827561
今日推荐