一、入门
- 查看shell解析器
cat /etc/shells
- 查看系统默认解析器
echo $SHELL
- 创建脚本
touch helloword.sh
- 脚本以#!/bin/bash开头
#!/bin/bash
echo "helloword"
- 执行脚本
第一种方式:
sh helloword.sh
第二种方式:
修改权限: chmod 777 helloword.sh
执行:./helloword.sh
二、多命令操作
- 创建一个文件,写入语句
touch batch.sh
vi batch.sh
chmod 777 batch.sh
./batch.sh
三、shell变量
1.系统变量
$HOME $PWD $SHELL $USER
echo $HOME
echo $PWD
echo $SHELL
echo $USER
2.自定义变量
- 基本语法
- 定义变量: 变量=值,等号两边不能有空格
A=1
echo $A
- 撤销变量:unset 变量
unset A
- 声明静态变量:readonly 变量=值
readonly B=3
echo $B
unset B
- 规则
- 变量名称可以由字母、数字和下划线组成,不能以数字开头
- 变量默认为字符串类型,不能进行数值操作
- 等号两边不能有空格,如果有空格需要加上双引号或者单引号
A="banzhang is a leader"
echo $A
- 全局变量
- 可把变量提升为全局环境变量,供其他shell程序使用,export 变量
- export A
3.特殊变量
- $n
- 描述:n为数字,$0代表该脚本名称, 1 − 9 代 表 第 一 到 第 九 个 参 数 , 10 以 上 的 参 数 需 要 用 大 括 号 包 含 ( 1-9代表第一到第九个参数,10以上的参数需要用大括号包含( 1−9代表第一到第九个参数,10以上的参数需要用大括号包含({10})。输入参数的时候,不同参数之间以空格隔开
vi par.sh
向par.sh写入内容:
#!/bin/bash
echo "$0 $1 $2 $3"
[root@www shell]# bash par.sh
par.sh
[root@www shell]# bash par.sh banzhang
par.sh banzhang
[root@www shell]# bash par.sh banzhang love
par.sh banzhang love
[root@www shell]# bash par.sh banzhang love mm
par.sh banzhang love mm
[root@www shell]# bash par.sh banzhang love mm mm
par.sh banzhang love mm
[root@www shell]# bash par.sh banzhang love mm mmaa
par.sh banzhang love mm
- $#
- 获取所有输入参数个数,常用于循环
[root@iZwz9bbmlfbm8e53rmdyldZ shell]# ./par.sh o
./par.sh o
1
[root@iZwz9bbmlfbm8e53rmdyldZ shell]# ./par.sh o o
./par.sh o o
2
[root@iZwz9bbmlfbm8e53rmdyldZ shell]# ./par.sh
./par.sh
0
[root@iZwz9bbmlfbm8e53rmdyldZ shell]# ./par.sh o o o
./par.sh o o o
3
[root@iZwz9bbmlfbm8e53rmdyldZ shell]# ./par.sh o o o o
./par.sh o o o
4
- $ *、$@
- $ * 代表命令行中所有的参数,$*把所有的参数看成一个整体
- $ @ 代表命令行中所有的参数,不过$@把每个参数区分对待
- $?
- 最后一次执行的命令的返回状态,如果这个变量的值为0,证明上一个命令正确执行,如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。
[root@iZwz9bbmlfbm8e53rmdyldZ shell]# bash par.sh banzhang love mm
par.sh banzhang love mm
3
banzhang love mm
banzhang love mm
[root@iZwz9bbmlfbm8e53rmdyldZ shell]# echo $?
0
[root@iZwz9bbmlfbm8e53rmdyldZ shell]# $?
-bash: 0: command not found
[root@iZwz9bbmlfbm8e53rmdyldZ shell]# echo $?
127
- 脚本变量的特殊用法