一、shell脚本写法
1、脚本第一部分,魔法字符 #!/bin/bash 指定解析器
<!--指定解析器--> #!/bin/bash
2、脚本第二部分,对脚本的信息进行说明
<!--脚本说明--> #Name: 名字 #Desc: 脚本功能描述 #Path: 存放路径
3、脚本第三部分,脚本要实现的具体代码内容
<!--打印hello world的shell代码--> echo ‘hello world‘
二、shell脚本的执行方式
1、标准执行方式:绝对路径 脚本文件名
注:在执行之前需添加执行权限
<!--脚本标准执行--> chmod +x first_shell.sh /usr/tmp first_shell.sh
2、非标准执行方式:
<!--指定解析器执行--> bash first_shell.sh <!--使用source读取脚本文件,执行文件里的代码--> source first_shell.sh
三、变量的使用
1、变量的定义方式
<!--变量定义方式一:直接赋值--> A=10 echo $A <!--变量定义方式二:命令行返回结果--> A="$(cat /etc/hosts)" echo $A <!--变量定义方式三:交互式定义变量read,用户输入--> <!--选项说明:1、-p 提示用户输入信息 2、-n 定义字符数 3、-p 不显示 4、-t 定义超时时间> read -p "请输入用户名:" name 请输入用户名:james echo $name
<!--变量定时方式四:交互式定义变量read,读取文件内容-->
read -p "请输入文件内容:" content < file.txt
<!--变量定义方式五:declare定义有类型的变量-->
<!--1、-i 整型 2、-r 只读 3、-a 定义普通数组 4、-A 定义关联数组 5、-x 将变量通过环境导出-->
declare -i A=100
echo $A
2、变量调用方式
<!--变量调用方式一:$--> A=10 echo $A <!--变量调用方式二:${}--> A=10 echo ${A}
3、变量类型
1)本地变量:当前用户自定义的变量。
<!--本地变量--> A=100 echo $A
2)环境变量:当前进程有效且能够被子进程调用的变量
env:查看当前用户的环境变量、
set:查询当前用户的所有变量(环境变量和临时变量)
export:export 变量名=变量值
变量名=变量值;export 变量名
<!--将一个临时变量编程环境变量--> export A=hello env grep|^A A=hello <!--永久生效--> vim /etc/profile export A=hello
3)全局变量:所有用户和程序都能调用且继承的变量
相关配置文件解读:
$HOME/.bashrc:当前用户的bash信息,用户登录时读取
$HOME/.bash_profile:当前用户的环境变量,用户登录时读取
$HOME/.bash_logout:当前用户的bash信息,用户登出时读取
etc/bashrc:全局的bash信息,所有用户都生效
etc/profile:全局环境变量
注:修改以上文件,必须重新登录或者source命令才能生效
4)系统变量(内置bash中的变量):shell中已经固定好了它的名字和作用
<!--($n):n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数需要大括号包含,如${10}--> echo $1 echo $7 test.sh 1 2 3 4 5 6 7 1 3 <!--($#):获取所有输入参数个数--> vim test.sh echo $1 echo $3 echo $7 test.sh 1 2 3 4 5 6 7 1 3 7 <!--($*):这个变量代表命令行中所有的参数,$*把所有参数看作一个整体--> <!--($@):这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待--> vim test.sh echo $* echo $@ test.sh 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 6 7 <!--($?):最后一次执行的命令的返回状态--> <!-- 0:上一个命令正确执行 非0:上一个命令执行不正确> $?