1. 预定义变量
预定义变量 | 说明 |
---|---|
$? | 用于判断上一条命令的执行状态。如果上一条命令执行正确,则这个变量的值是0;如果上一条命令执行错误,则这个变量的值是除0之外的其他数(具体是哪个数,由命令的撰写者决定)。 |
$$ | 当前进程的进程号(PID)。 |
$! | 在后台运行的最后一个进程的进程号(PID)。 |
示例:
[root@localhost ~]# ls
anaconda-ks.cfg a.txt install.log install.log.syslog sh testfile
[root@localhost ~]# echo $?
0
[root@localhost ~]# lstt
-bash: lstt: command not found
[root@localhost ~]# echo $?
127
[root@localhost ~]# echo $$
8790
[root@localhost ~]# echo $!
每个计算机程序只要在运行,至少会产生一个进程。
当前,并没有后台运行的进程,因此,$!的值为空。
这里,我们写一个脚本文件variable.sh,内容如下:
#!/bin/bash
#Author: admin
#输出当前进程的PID
#这个PID其实就是这个脚本执行时产生的进程的PID
echo "The current process is $$"
#使用find命令查找hello.sh文件
#符号&表示把这条命令放入后台执行
find /root/sh -name hello.sh&
echo "The last of daemon processes is $!"
赋予执行权限:
chmod 755 variable.sh
- 1
执行该脚本:
[root@localhost sh]# ./variable.sh
The current process is 8889
The last of daemon processes is 8890
[root@localhost sh]# /root/sh/hello.sh
2. 接收键盘输入
命令格式:read [选项] [变量名]
作用:接收键盘输入的字符串作为变量的值。
选项:
- -p “提示信息” :在等待键盘输入时,输出提示信息,方便用户输入。
- -t 秒数:指定等待时间,防止read命令一直等待用户输入。
- -n 字符数:指定输入的字符数,只要用户输入指定的字符数,该read命令立即执行完毕。
- -s:隐藏输入的数据(屏幕上看不到任何输入信息)。
示例:
[root@localhost sh]# read -p "please input a number:" ab
please input a number:6
[root@localhost sh]# echo $ab
6
read命令也可用于shell脚本文件中,接收用户的输入来作为变量的值。
编写一个脚本read.sh,内容如下:
#!/bin/bash
#Author: admin
# 将用户的输入作为变量name的值
read -t 10 -p "Please input your name: " name
echo "Your name is $name"
# 回车
echo -e "\r"
# 将用户的输入作为变量age的值
read -s -t 10 -p "Please input your age: " age
# 回车
echo -e "\r"
echo "Age is $age"
# 回车
echo -e "\r"
# 将用户的输入作为变量gender的值
read -n 1 -t 10 -p "Please select your gender [M/F]: " gender
# 回车
echo -e "\r"
echo "Gender is $gender"
赋予执行权限,然后执行该脚本。
chmod 755 read.sh
./read.sh