Shell 编程入门学习-01

1,shell脚本格式及执行方式

1)脚本格式

什么是Shell 脚本文件?简单来说就是将Linux 或类UNIX系统的命令写入一个文件中,这个文件就是一个Shell 脚本文件。
这样做的好处是,脚本文件一旦编写完成,以后就可以自动完成脚本文件中的所有命令(效率更高)。而且,相同的脚本文件可以被反复调用并执行,避免了不必要的手动重复输入命令的工作。
所以编写的Shell 脚本文件必须在Linux 或类UNIX操作系统中运行,而我使用的操作系统平台是CentOS7。
那让我们看一下shell脚本格式吧
在这里插入图

多行注释:使用<< 符号,符号后面的关键字是自定义的,如开头<<abc ,则结束注释需要使用abc(字母区分大小写),

2)执行方式

脚本自身没有执行的权限,需要使用sh 解释器来执行

列如:[root@centos7 ~]# sh a.sh
       hello the world

可通过chmod 命令分配执行权限,脚本文件具有可执行权限就可以使用绝对路径或相对路径执行了。

例如:
[root@centos7 ~]# chmod +x a.sh #分配可执行权限
[root@centos7 ~]# ./a.sh #使用相对路径执行(当前工作目录)
 hello the world
[root@centos7 ~]# /root/a.sh #使用绝对路径执行
 hello the world

2,shell脚本中数据输入和输出

使用echo 数据输出,使用read 命令读取用户的输入信息。

echo

功能描述:echo 命令主要用来显示字符串信息。
语法格式:echo [选项] 字符串

[root@centos7 ~]# echo -e "hello world"
hello world

可以实现任意字符串消息的输出。

read

功能描述:read 命令可以从标准输入读取一行数据。
语法格式:read [选项] [变量名] ,如果未指定变量名,则默认变量名称为REPLY。

选项功能
-p显示提示信息
-t设置读入数据的超时时间,超过时间就停止输入
-n设置读取n个字符后结束,而默认会读取标准输入的一整行内容
-r支持读取\,而默认read命令理解\为特殊符号(转义字符)
-s静默模式,不显示标准输入的内容(Silent mode),常用于隐藏密码输入

案例:
不加选项

[root@centos7 ~]# read key1 key2 key3 #从标准输入读取3 组字符串
11 22 33
[root@centos7 ~]# echo $key1
11
[root@centos7 ~]# echo $key2
22
[root@centos7 ~]# echo $key3
33

使用选项-p ,-s

[root@centos7 ~]# read -p "请输入用户名:" user #设置一个提示信息
请输入用户名:jacob
[root@centos7 ~]# echo $user
jacob
[root@centos7 ~]# read -s  -p "请输入用户密码:" pass #设置一个提示信息
请输入用户名:            #这时候是看不到输入的密码的。
[root@centos7 ~]# echo $pass 
123456

使用选项-t ,-n, -r

[root@centos7 ~]# read -t 3 -p "请输入用户名:" user
使用-t 设置超时时间,3 秒后read 命令自动退出。

[root@centos7 ~]# read -n1 -p "按任意键:" key #仅读取一个字符

[root@centos7 ~]# read key #默认read 命令不支持\
\ABC
[root@centos7 ~]# echo $key #所以key 的值没有\字符
ABC
[root@centos7 ~]# read -r key #设置read 命令支持读取\
\ABC
[root@centos7 ~]# echo $key #查看结果,\被保留
\ABC

3,shell脚本的变量

语法格式:变量名=变量值,变量名仅是用来找到变量值的一个标识而已,它本身没有任何其他功能。
命名规则:字母(大小写都可以)、数字和下画线(_)组合,不可以使用数字开头。
读取变量值,需要在变量名前添加一个美元符号“$”;而当变量名与其他非变量名的字符混在一起时,需要使用{}分隔。
例如:

[root@centos7 ~]# test=123 #定义变量,变量名为test,值为123
[root@centos7 ~]# echo $test #调用变量,提取变量的值
混合在一起时
[root@centos7 ~]# echo ${test}RMB   #正确返回123RMB
123RMB
[root@centos7 ~]# echo $test-yuan
123-yuan
[root@centos7 ~]# echo $test:yuan
123:yuan
[root@centos7 ~]# echo $test yuan
123 yuan
[root@centos7 ~]# unset test #取消变量定义
[root@centos7 ~]# echo $test #返回的结果为空

因变量名不能包含特殊字符,所以系统不会把特殊符号当作变量名的一部分,系统会理解变量名为test。

4,引号使用

Shell 支持多种引号,如""(双引号)、’’(单引号)、``(反引号)、\(转义符号)

1)单引号与双引号

双引号的作用是引用一个整体,而单引号除可以引用一个整体外还可以屏蔽特
殊符号
这就是两则的区别。

2)命令替换``(反引号)

反引号是一个命令替换符号,它可以使用命令的输出结果替代命令。
例如:

[root@centos7 ~]# tar -czf /root/log-`date +%Y%m%d`.tar.gz /var/log/

使用tar 命令进行备份。但是,因为使用了``符号实现命令替换,所以这
里备份的文件名不再是date,而是date 命令执行后的输出结果,即使用命令的输出结果替
换date 命令本身的字符串,最后备份的文件名类似log-20180725.tar.gz

反引号缺点:容易跟单引号混淆,不支持嵌套(反引号中再使用反引号),为此人们设计了新组合符号${},作用也是替代命令,但支持嵌套。
例如:

[root@centos7 ~]# echo $(echo 我是1 级嵌套 $(echo 我是2 级嵌套))

3)\(转义符号)

作用:可使特殊字符失去作用,当成普通字符使用。

[dwdangwanli@bmwwebserv-order2 ~]$ echo $?    
0
[dwdangwanli@bmwwebserv-order2 ~]$ echo \$?
$?

以上就是该章节内容了,欢迎大家阅读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值