1.用户自定义变量 只能在当前shell生效
- 赋值 有空格框起来
var='hello word'
var="hello word" - 显示 拼接的时候用{}
echo $var
hello word
echo $var_log
hello word_log
2.系统变量
1)打印系统所有的变量
[root@rstx-53 ~]# export
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
- export 把自定义变量转变为当前窗口的环境变量
[root@rstx-53 ~]# sh -x test.sh
+ echo
[root@rstx-53 ~]# export var='hello word'
[root@rstx-53 ~]# sh -x test.sh
+ echo hello word
hello word
3.变量参数的特殊用法
[root@rstx-53 ~]# cat test.sh
#!/bin/bash
echo "The name of the script $0" #执行脚本的名称
echo "one $1" #第一个参数
echo "two $2" #第二个参数
echo "three $3" #第三个参数
echo "parameter all $*" #显示全部参数 “$*”后 所有参数当做一个整体
echo "parameter all $@" #显示全部参数 "$@"后 所有参数不会当做一个整体 当做一个字符串依次返回
echo "parameter num $#" #显示参数的个数
echo "pid num $$" #显示执行脚本的pid
echo "Command Execution Result $?" #显示命令的执行结果
[root@rstx-53 ~]# sh test.sh 1 2 3 4 5 6
The name of the script test.sh
one 1
two 2
three 3
parameter all 1 2 3 4 5 6
parameter all 1 2 3 4 5 6
parameter num 6
pid num 30428
Command Execution Result 0
4.交互式传递变量
1)read
[root@rstx-53 ~]# cat read.sh
#!/bin/bash
read -p "please input vars: " read_vars
echo " vars is $read_vars"
[root@rstx-53 ~]# sh read.sh
please input vars: 1
vars is 1
通过read交互式输入ip 检测ip是否在线
[root@localhost ~]# cat check_ip.sh
#!/bin/bash
read -p "Please Input Ip: " Ip
ping -c 2 $Ip >/dev/null
if [ $? = 0 ];then
echo "$Ip is alived"
else
echo "$Ip is failed"
fi
变量替换切片
定义变量
[root@localhost ~]# vars=www.baidu.com.cn
[root@localhost ~]# echo $vars
www.baidu.com.cn
1)${vars#匹配规则} PS:从头开始匹配 最短删除
[root@localhost ~]# echo ${vars#*.}
baidu.com.cn
2)${vars##匹配规则} PS:从头开始匹配最长删除
[root@localhost ~]# echo ${vars##*.}
cn
3)${vars%匹配规则} PS: 从尾开始匹配最短删除
[root@localhost ~]# echo ${vars%.*}
www.baidu.com
4)${vars%%匹配规则} PS:从尾开始匹配最长删除
[root@localhost ~]# echo ${vars%%.*}
www
5)${vars/旧字符串/新字符串} PS:替换变量内的旧字符串为新字符串 只替换第一个
[root@localhost ~]# echo ${vars/c/a}
www.baidu.aom.cn
6)${vars//旧字符串/新字符串} PS:替换变量内的旧字符串为新字符串 全部替换
[root@localhost ~]# echo ${vars//c/a}
www.baidu.aom.an