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 也可以使用其他符号:
:<<'
注释内容...
注释内容...
注释内容...
'
:<<!
注释内容...
注释内容...
注释内容...
!