SHELL脚本语言
今天开始学习shell语言
Shell 脚本
Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。
由于习惯的原因,简洁起见,本文出现的 “shell编程” 都是指 shell 脚本编程,不是指开发 shell 自身。
下面是我整理的思维导图:
Shell脚本入门
Shell echo命令
Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。命令格式:
echo string
可以使用echo实现更复杂的输出格式控制。
第一个shell脚本:
打开终端
创建并打开vim helloworld.sh
编辑第一个脚本:
echo “helloworld”
运行shell脚本有三种方式:
- 使用最高权限打开: ./helloworld.sh
- 使用sh命令打开:sh.helloworld.sh
- 使用bash方法打开:bash.helloworld.sh
第二个shell脚本::多命令处理
打开终端创建并编辑vim touch.sh,命令如下:
vim touch.sh
#!/bin/bash
cd /home/df/桌面
touch baz.txt
echo "I love xiaowugui" >>baz.txt #">>是把编译的内容追加到指定文件"
:wq #退出并保存
然后执行 sh.touch.sh,会发现桌面上会多出来一个baz.txt 打开Vi baz.txt会发现输出语句
“ I love xiaowugui”
上面的多命令分为四步:
先进入到cd /home/df/桌面
然后创建touch baz.txt
输出语句echo “I love xiaowugui”
最后追加到echo “I love xiaowugui” >>baz.txt
常用变量
自定义变量
一:基础语法
定义变量:变量=值;
a=2
echo $a
输出2
有人说我不想用这个变量了怎么办
unset [变量名] 进行删除
声明静态变量:readonly ss=2 静态变量不能使用unset删除
readonly ss=2
echo $ss
输出2
unset ss
bash: unset: ss:无法取消设定: 只读 variable
Shell变量命名规则
变量名必须是以字母或下划线字符“_”开头,后面跟字母、数字或下划线字符。不要使用?、*或其他特殊字符命名你的变量。
注意:
变量名和等号之间不能有空格;
首个字符必须为字母(a-z A-Z)
中间不能有空格,可以是下划线
不能使用标点符号
变量里的空格需要用“”隔开
不能使用bash里的关键字
二:如何把变量提升到全局变量,可供其他程序使用
export [变量名]:让这个变量升级为全局变量让其他程序也可以使用
#先定义变量D
D=1
#然后再编辑C
vim c.sh
echo = "helloworld"
echo $D
#将B放入c中
#然后输出C
echo $C
#结果只有helloworld
export D
#再输出C
echo $C
helloworld
1
以上就是全局变量的用法
1.特殊变量:$n
1.基本语法
$n(功能描述:n为数字,$0代表该脚本名称,$1-
9
代
表
第
一
到
第
九
个
参
数
,
十
以
上
的
参
数
需
要
用
大
括
号
包
含
,
如
9代表第一到第九个参数,十以上的参数需要用大括号包含,如
9代表第一到第九个参数,十以上的参数需要用大括号包含,如{10})
#1.输出该脚本文件名称,输入参数1和输入参数2的值
$touch parameter.sh $vim parameter.sh
#! /bin/bash echo “$0 $1 $2 $3”
$ chmod 777 parameter.sh
运行此脚本:bash parameter.sh 则结果为paramerter.sh
命令:bash parameter.sh a 则结果paramerter.sh a
#依次类推,命令parameter.sh a b c d 则结果:parameter.sh a b c 不显示第四个参数
2.特殊变量:$
1)基本语法:$#(功能描述:获取所有输入参数个数,常用于循环)
(2)案例实操:获取输入参数的个数
$vim parameter.sh
#/bin/bash
echo “$0 $1 $2”
echo $#
获取权限:Chmod 777 parameter.sh
执行脚本:./parameter.sh a b
结果:parameter.sh a b 2
3.特殊变量:$* $@
∗ ( 功 能 描 述 : 这 个 变 量 代 表 命 令 行 中 所 有 的 参 数 , *(功能描述:这个变量代表命令行中所有的参数, ∗(功能描述:这个变量代表命令行中所有的参数,*把所有的参数看成一个整体)
@ ( 功 能 描 述 : 这 个 变 量 也 代 表 命 令 行 中 所 有 的 参 数 , 不 过 @(功能描述:这个变量也代表命令行中所有的参数,不过 @(功能描述:这个变量也代表命令行中所有的参数,不过@把每个参数区分对待)
4.特殊变量:$?
(1)基本语法:$?(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,则证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确)
(2)案例实操:判断helloworld.sh脚本是否执行正确
#执行脚本
./helloworld.sh
#结果为:
hello world
#输入命令:
echo $?
显示结果为0 就是执行正确,非0,则不正确
Shell 注释
以 # 开头的行就是注释,会被解释器忽略。
通过每一行加一个 # 号设置多行注释,像这样:
#--------------------------------------------
#这是一个注释
#author:菜鸟教程
#site:www.runoob.com
#slogan:学的不仅是技术,更是梦想!
#--------------------------------------------
#####用户配置区 开始 #####
#
#
#这里可以添加脚本描述信息
#
#
#####用户配置区 结束 #####
多行注释
多行注释还可以使用以下格式:
:<<EOF
注释内容...
注释内容...
注释内容...
EOF
EOF 也可以使用其他符号:
:<<'
注释内容...
注释内容...
注释内容...
'
:<<!
注释内容...
注释内容...
注释内容...
!
以下是我整理出的理论知识:
Shell
Shell脚本简介:
用C语言来开发的程序,用户和Linux之间很重要的一个沟通工具
Shell即是命令,也是程序设计语言
Shell脚本:
Shell是指一种应用程序,提供了一个界面,用户通过这个界面访问操作系统内核的服务
Shell脚本(Shell script)是一种为Shell编写的脚本程序
平时我们说的shell值shell脚本(shell和shell script是两个不同的概念)
Shell环境
只要一个能编写的代码的文本编译器和一个能解释脚本的解释器
种类:
Bourne Shell (/usr/bin/sh)
Bourne Again Shell (/bin/bash) 主要应用程序
C Shell (/usr/bin/csh)
K Shell (/bin/ksh)
Shell fir Root (/sbin/sh)
Shell特点
1.编译语言与解释型语言的差异
2.如何编写和运行Linux Shell
3.Linux Shell 运行在环境变量中,环境变量的设置
4.#!是一个约定的标记,他的目地在于告诉系统这个脚本需要一个什么编译器来执行(也就是执行那一种Shel)
5.echo 命令用于向窗口输出文本
Hello world代码运行:
#!/bin/bash
echo “hello world”
保存并推出
执行文件 bash Hello world.sh
输出 Hello world
Shell运行方式:
1.作为可执行程序运行
格式:chmod +x ./脚本名称 (给脚本添加执行权限)
./脚本名称 (直接执行代码)注:./文件路径必须加
2.作为解释器的参数运行
格式:/bin/sh xxx.sh
Shell变量
存储数据的容器,通过容器变量存储可以变化的数据
声明变量(定义变量)
声明变量时,变量名称不能添加
符
号
变
量
名
和
“
=
”
之
间
不
能
有
空
格
规
则
:
变
量
的
命
名
只
能
使
用
英
文
字
母
,
数
字
和
下
划
线
,
首
个
字
符
不
能
以
数
字
开
头
中
间
不
能
有
空
格
可
以
使
用
不
能
使
用
标
点
符
号
不
允
许
使
用
中
文
不
能
使
用
b
a
s
h
里
面
的
关
键
字
(
−
−
h
e
l
p
可
以
查
看
保
留
的
关
键
字
)
∗
∗
使
用
变
量
∗
∗
(
必
须
是
定
义
过
的
变
量
)
只
需
要
在
变
量
前
面
加
上
符号 变量名和“=”之间不能有空格 规则:变量的命名只能使用英文字母,数字和下划线,首个字符不能以数字开头 中间不能有空格 可以使用_ 不能使用标点符号 不允许使用中文 不能使用bash里面的关键字(--help可以查看保留的关键字) **使用变量**(必须是定义过的变量) 只需要在变量前面加上
符号变量名和“=”之间不能有空格规则:变量的命名只能使用英文字母,数字和下划线,首个字符不能以数字开头中间不能有空格可以使用不能使用标点符号不允许使用中文不能使用bash里面的关键字(−−help可以查看保留的关键字)∗∗使用变量∗∗(必须是定义过的变量)只需要在变量前面加上符号就可以调用变量
EX:echo KaTeX parse error: Expected 'EOF', got '#' at position 106: …能被改变 code :#̲!/bin/bash …{your_name}"!"
str="你好,
y
o
u
r
n
a
m
e
!
"
单
引
号
拼
接
E
X
:
s
t
r
=
′
h
e
l
l
o
,
′
{your_name}!" 单引号拼接 EX: str='hello,'
yourname!"单引号拼接EX:str=′hello,′{your_name}’!’
str=‘hello,${your_name}!’
数字类型
布尔类型(判断类型)
true——代表真
false——代表假
获取字符串的长度
EX: str=“12345”
${#str}
提取字符串的长度:从原始字符串中截取其中一部分
EX: 截取第二位开始截取5个字符
查找子字符串
查找指定的索引位置
EX: 查找字符串中O的位置
数组
数组是一列有序或者无序的数据集合
在Shell中,通过小括号定义数组,数组的元素用“空格”分割
EX:array=(1 2 3 4 5 6 6 )
arrry=(“avsd” “asdsad” “adsadf”)
读取数组
命令语法 echo ${变量名称_[索引值]}
Shell注释 即为解释器忽略的内容
单行注释 以#开头的行
多行注释 通过每一行加一个#,设置多行注释
EX: :<<任意字符
注释内容
对应的任意字符