Shell编程---Bash变量

用户自定义变量   |   环境变量  | 位置参数变量  |  预定义变量

变量是内存地址的名称


4、本地变量(用户自定义变量)
变量定义

[root@localhost ~]# name=hello

变量叠加

[root@localhost ~]# aa=123
[root@localhost ~]# aa="$aa"456
[root@localhost ~]# aa=${aa}456

变量查看

[root@localhost ~]# set    ###查看到系统中所有的变量

变量删除

[root@localhost ~]# unset 变量名称

#######################################################################

环境变量

export 变量名=变量值
#申明变量


env
#查询变量

unset 变量名
#删除变量

PS1:定义系统提示符的变量
\d:下视日期,格式为“星期 月 日”
\h:显示简写主机名。如默认主机名“localhost”

#############################################################
位置参数变量

位置参数变量   作用
$n  n为数字,$0代表命令本身,$1-$9代表第1到第8个参数,十以上的参数需要用大括号包含,如${10}
$* 这个变量代表命令行中所有的参数,$*会把所有的参数看成一个整体
$@ 这个变量也代表命令行所有的参数,不过$@把每个参数区分对待
$# 这个变量代表命令行中所有参数的个数
[root@localhost ~]# vim weizhicanshu.sh
#!/bin/bash
echo $0
echo $1
echo $2
echo $3

[root@localhost ~]# chmod 755 weizhicanshu.sh

[root@localhost ~]# ./weizhicanshu.sh 111 222 333 
./weizhicanshu.sh
111
222
333

例子1:
[root@localhost ~]# vim sum.sh
#!/bin/bash
num1=$1
num2=$2
sum=$(($num1 + $num2))
echo "sum is : $sum"
[root@localhost ~]# chmod 755 sum.sh
[root@localhost ~]# ./sum.sh 111 222

##############################################################
预定义变量

预定义变量 作用
$? 最后一次执行的命令的返回状态。如果这个变量值为0,证明上一个命令正确执行。如果这个变量值为非0(具体时那个数,由命令自己来确定),则证明上一个命令执行不正确
$$ 当前进程的进程号PID
$! 后台运行的最后一个进程的进程号(PID)
[root@localhost ~]# vim test1.sh
#!/bin/bash
echo "$$"   #查看当前进程的PID
find /root -name hello.sh &
echo "$!"   #查看后台运行的最后一个进程的PID

################################################################################

接收键盘输入

[root@localhost ~]# read [选项] [变量名]
选项:
-p "提示信息"        在等待read输入时,输出提示信息
-t  秒数                 read命令会一直等待用户输入,使用此选项可以指定等待时间
-n 字符数             read命令只接受指定的字符数,就会执行
-s  

例子1:

[root@localhost ~]# vim test2.sh
#!/bin/bash
read -t 30 -p "Please input your name: " name
#提示"请输入姓名" 并等待30秒,把用户输入保存入变量那么中
#变量name前面必须由个空格
echo "Name is $name"

read -s -t 30 -p "Please enter your age:" age
#年龄是隐私,所以我们用"-s" 选项隐藏输入
echo "Age is $age"
echo -e "\n"

read -n 1 -t 30 -p "Please select your gender[M/F]: " gender
#使用"-n 1"选项只接收一个输入字符就会执行(都不用输入回车)
echo -e "\n"
echo "Sex is $gender" 

猜你喜欢

转载自blog.csdn.net/qq_28710983/article/details/81676263