变量设置规则
1、变量名称可以由字母、数字和下划线组成,但不能以数字开头;
2、在Bash中,变量的默认类型是字符串,如果要进行数值运算,则必须指定变量类型为数值型;
3、变量用等号连接值,等号左右两侧不能有空格;
4、变量的值如果有空格,需要使用单引号或双引号包括;
5、在变量的值中,可以使用“”转义符;
6、如果需要增加变量的值,那么可以进行变量值的叠加,不过变量需要使用双引号包含“$变量名”或用${变量名}包含;
7、如果把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令;
8、环境变量名建议大写,便于区分。
变量分类
1、用户自定义变量
2、环境变量
3、位置参数变量:用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的
4、预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用是固定的
set 查看系统中所有的变量
echo $name 调用变量
unset name 删除变量,不带$
执行set命令后,可看到PATH环境变量,即系统查找命令的路径
环境变量
用户自定义变量只在当前的shell中生效,而环境变量会在当前shell和这个shell的所有子shell当中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的shell中生效
设置环境变量
export 变量名=变量值 申明环境变量,声明后子shell就可以使用该变量
env 查询变量
unset 变量名 删除变量
位置参数变量
计算两个数之和的shell脚本:
#!/bin/bash
num1=$1
num2=$2
sum=$(($num1+$num2))
echo $sum
[root@192 test]# cat canshu2.sh
#!/bin/bash
for i in "$*"
do
echo "The parameters is:$i"
done
x=1
for j in "$@"
do
echo "The parameters is:$j"
x=$(($x+1))
done
[root@192 test]# ./canshu2.sh 1 2 3 4 5 6
The parameters is:1 2 3 4 5 6
The parameters is:1
The parameters is:2
The parameters is:3
The parameters is:4
The parameters is:5
The parameters is:6
预定义变量
$$ 当前脚本执行时,生成的进程的PID
$!
[root@192 test]# echo $?
0
[root@192 test]# sdfadsf
-bash: sdfadsf: command not found
[root@192 test]# echo $?
127
接收键盘输入
read [选项] [变量名]
-p 提示信息:在等待read输入时,输出提示信息
-t 秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间
-n 字符数:read命令只接受指定的字符数,就会执行,不用回车
-s :隐藏输入的数据,保密
[root@192 test]# cat read.sh
#!/bin/bash
read -t 30 -p "Please input your name:" name
#提示输入姓名,等待30秒,将用户输入的值赋值给变量name
echo "Input name is $name"
read -s -t 30 -p "Please enter your age:" age
#年龄是隐私,所以用-s选项隐藏输入
echo "Enter age is $age"
echo -e "
"
read -n 1 -t 30 -p "Please select your gender[M/F]:" gender
#选择性别,接收一个字符后就执行,不用回车
echo -e "
"
echo "Sex is $gender"