学习目录
一、如何定义变量
二、取消变量
三、双引号" "
和单引号' '
有什么相同和不同之处
四、通配符
五、shell脚本编写规范
六、执行脚本方式
七、脚本增加可执行权限
shell是什么?
简单来说就是将需要执行的命令保存到文本中,按照顺序执行。它是解释型的,意味着不需要编译。
一、如何定义变量
1、基本方式
2、命令执行结果赋值给变量
3、交互式定义变量(read)
4、定义有类型的变量(declare)
变量名的定义规则:
变量名严格区分大小写,不能有特殊字符,不能以数字开头,等号两边不能有任何空格,变量名尽量做到见名知意
1、基本方式
直接赋值给一个变量,变量名=变量值
[root@bigdata04 ~]# A=hello
[root@bigdata04 ~]# echo $A---获取变量
hello
[root@bigdata04 ~]# B="hello world"-----变量值如果有空格用引号引起来
[root@bigdata04 ~]# echo $B
hello world
[root@bigdata04 ~]# echo ${B}-----获取变量,可以获取变量的某一部分
hello world
[root@bigdata04 ~]# echo ${B:3:2}
lo
[root@bigdata04 ~]# echo ${B:0:2}
he
2、命令执行结果赋值给变量
[root@MissHou ~]# B=`date +%F`
[root@MissHou ~]# echo $B
2019-04-16
3、交互式定义变量(read)
目的:让用户自己给变量赋值,比较灵活
常见选项释义:
-p 定义提示用户的信息
-n 定义字符数(限制变量值的长度)
-s 不显示(不显示用户输入的内容)
-t 定义超时时间,默认单位为秒(限制用户输入变量值的超时时间)
用法1:用户自己定义变量值
[root@MissHou ~]# read name
harry
[root@MissHou ~]# echo $name
harry
[root@MissHou ~]# read -p "Input your name:" name
Input your name:tom
[root@MissHou ~]# echo $name
tom
用法2:变量值来自文件
[root@MissHou ~]# cat 1.txt
10.1.1.1
[root@MissHou ~]# read ip < 1.txt
[root@MissHou ~]# echo $ip
10.1.1.1
4、定义有类型的变量(declare)
目的: 给变量做一些限制,固定变量的类型,比如:整型、只读
用法:declare 选项 变量名=变量值
常用选项:
-i 将变量看成整数 declare -i A=123
-r 定义只读变量 declare -r B=hello
二、取消变量
unset 变量名
[root@bigdata04 ~]# unset B
[root@bigdata04 ~]# echo $B
三、双引号" "
和单引号' '
有什么相同和不同之处
相同点:引号中的内容可以作为一个整体
不同点:双引号可以引用变量,单引号不能引用变量
四、通配符
*
:匹配0个或者任意多个字符
?
:任意单个字符
[a-z]
:括号内的任意单个字符
!
:取反
{string,string,string}
:匹配括号里面用逗号隔开的所有的字符串
{1..100}
:匹配一个序列
五、shell脚本编写规范
案例:
#!/bin/env bash
# 以下内容是对脚本的基本信息的描述
# Name: first_shell.sh
# Desc: num1
# Path: /shell01/first_shell.sh
# Usage:/shell01/first_shell.sh
# Update:2019-05-05
echo "hello world"
echo "hello world"
echo "hello world"
1.脚本名称 ***.sh
2.脚本内容
1)定义解析器
#!/bin/bash
#!/bin/env bash 优势:会自动去找当前系统的解析器位置
2)注释说明
#
3)程序本身
定义变量+基本命令+基本语法+思想
六、执行脚本方式
1、标准脚本执行方法:相对路径或者绝对路径
前提:标准执行方式脚本必须要有可执行权限
[root@MissHou shell01]# /shell01/first_shell.sh---绝对路径
或者
[root@MissHou shell01]# ./first_shell.sh---相对路径
2、非标准的执行方法(不建议)
场景:查看脚本执行过程;或者脚本无法赋予可执行权限
解析器 +脚本文件
[root@MissHou shell01]# bash first_shell.sh
[root@MissHou shell01]# sh first_shell.sh
[root@MissHou shell01]# bash -x first_shell.sh
+ echo 'hello world'
hello world
+ echo 'hello world'
hello world
+ echo 'hello world'
hello world
----------------
-x:一般用于排错,查看脚本的执行过程
-n:用来查看脚本的语法是否有问题
------------
七、脚本增加可执行权限
[root@MissHou shell01]# chmod +x first_shell.sh
网友评论