1-shell基本语法
shell脚本开发规范
1、命名:
要有意义,后缀.sh
2、首行
是而且必须是命令解释器(#!/bin/bash)
3、注释
简单描述脚本信息
4、执行
bash 脚本名称
5、脚本内容
从上到下,依次执行。
6、其他
成对的符号,成对写,避免丢失
() {} [] ' ' " "
流程格式:
先写完,然后填空
缩进
仅仅是表示美观
案例:
创建一个简单的脚本
vi a.sh
代码如下:
#!/bin/bash echo hi echo hello
脚本的执行方式
方式一:
bash 脚本名称
bash a.sh
方式二:
文件的路径
文件一定要有执行权限
把权限修改成可执行的权限
chmod +x a.sh ./a.sh
方式三:
source 脚本名称
保证环境一致性,某个脚本在你自己的笔记本可以执行成功,但是在其他人机器上执行失败,原因就是:环境不一致
source a.sh
方式四:
注释的使用
单行注释 #
多行注释格式如下:
:<<! 注释的内容 !
创建一个脚本,dir='pwd'中的dir作为一个变量使用
vi a.sh
脚本的代码如下:
#!/bin/bash :<<! 脚本描述:测试命令行输入 作者:python 13期 版本:v1.0 联系方式:中南海 ! dir=`pwd` echo $dir
执行脚本
bash ./a.sh
注释的部分没有显示出来
基本语法
变量
变量:存储动态值的一个抽象概念
变量包括两部分:
变量名 不变的
变量值 变化的
常见的变量有
本地变量,只在本地有效
全局变量,在当前的系统下,所有的环境都有效
内置变量,bash中内置了很多变量,我们可以直接拿过来使用
本地变量:普通变量和命令变量
普通变量
方式一:
变量名=变量值 变量值必须是一个整体,中间么有特殊字符如(a=a a a)是错的
定义一个变量
itcast=nihao
输出变量
echo $itcast
方式二:
变量名='变量值' 我看到的内容,我就输出什么内容 (注音这是单引号)
定义一个变量
itcast1='nihao 666'
输出这个变量
echo $itcast1
方式三:
变量名="变量值" 如果变量值范围内,有可以解析的变量名A,那么首先解析变量名A,将A的结果和其他内容组合成一个整体,重新赋值给变量B (注音这是双引号)
输出一个已经存在的变量
echo $itcast
定义一个变量
注音这里的$itcast是一个变量,它的值如上所示
itcast4="nihao 666-$itcast"
输出这个变量
echo $itcast4
方式四:
"${变量名}" 场景: 标准使用方式,
echo "${itcast}"
执行脚本
echo "${itcast}"
命令变量:把linux命令赋值给一个变量
变量名=`命令`
变量名=$(命令)
执行流程:
1、执行命令
2、将命令执行后的结果,赋值给新的变量名A
定义一个命名变量,注音这不是一个单引号,而是一个反引号,在数字1的左边
dir=`pwd`
输出这个变量
echo $dir
相当于执行linux的pwd的命令
定义一个命令变量
dir=$(pwd)
执行命令变量
echo $dir
相当于pwd
变量的查看
第一种
$变量名 使用场景,私下里,在命令行/脚本中使用,图省事
echo $dir
第二种
echo "$变量名"
echo "$dir"
第三种
${变量名} 使用场景 echo " dsa dsafsa dsafsa ${变量名} f " 双引号里面有变量的话,会先执行里面的变量,把结果在从新赋值
echo "dsd dsd ${dir}"
第四种
"${变量名}" 使用的场景,标准使用方式,
echo "${dir}"
全局变量
全局变量查看方式
env
set declare 会把变量的函数也给显示出来
env
自定义一个全局变量
方式一:
1、首先定义一个本地变量
2、使用export声明这个本地变量为全局变量
itcast5=qiang666 export itcast5
查看自定义的全局变量
env |grep itcast5
方式二:
定义本地变量的同时,使用export声明本地变量为全局变量
自定义一个全局变量
export itcast6=qiang666
查看自定义的全局变量
env |grep itcast
删除变量
格式:
unset 变量名
删除上面自定义的两个全局变量
unset itcast5 unset itcast6
查看有没有删除成功
env |grep itcast
内置变量
查看内置变量
man bash
跟脚本文件有关系的变量
"$0" 显示当前脚本的名称
创建一个脚本
vi file1.sh
代码如下
#!/bin/bash # 获取脚本的名称 echo "我脚本的名称是: file.sh" echo "我脚本的名称是:$0"
执行脚本
bash file1.sh
使用场景获取当前脚本的使用方式
#!/bin/bash # 获取脚本的名称 echo "我脚本的名称是: file.sh" echo "我脚本的名称是:$0" echo "当前脚本的使用方式是:bash $0"
执行脚本
bash file1.sh
$# 获取当前脚本传入参数的数量
创建一个脚本
vi num.sh
脚本代码如下
#!/bin/bash # 获取当前脚本传入的参数数量 echo "当前脚本传入的参数数量是: $#"
执行脚本,传递多个参数
bash num.sh dsd dasd
$n 获取当前脚本传入的第n个位置的参数
创建一个脚本
vi weizhi.sh
脚本代码如下:
#!/bin/bash # 获取指定位置的参数 echo "第一个位置的参数是: $1" echo "第二个位置的参数是: $2" echo "第三个位置的参数是: $3" echo "第四个位置的参数是: $4"
执行脚本
bash weizhi.sh sds dsd fgr yty5