实例1:
[root@localhost day01]# vim vars.sh#!/bin/bashecho$1echo$2echo$3[root@localhost day01]# chmod +x vars.sh [root@localhost day01]# ./vars.sh aa bb cc //执行脚本的时候aa对应的是脚本中的$1,bb=$2,cc=$3
aa
bb
cc
实例2:
[root@localhost day01]# vim /root/shell/day01/user.sh[root@localhost day01]# chmod +x user.sh #!/bin/bashuseradd"$1"echo"$2"|passwd --stdin "$1"[root@localhost day01]# ./user.sh tom 123456
Changing password for user tom.
passwd: all authentication tokens updated successfully.
[root@localhost day01]# grep tom /etc/passwd
tom:x:1001:1001::/home/tom:/bin/bash
(4)预定义变量
用来保存脚本程序的执行信息
直接使用这些变量
不能直接为这些变量赋值
变量名
含义
$0
当前所在的进程或脚本名
$$
当前运行进程的PID号
$?
命令执行后的返回状态,0表示正常,1或其他值表示异常
$#
已加载的位置变量的个数
$*
所有位置变量的值
#测试预定义变量[root@localhost ~]# ls /opt/[root@localhost ~]# echo "$?" //显示0说名ls /opt/执行成功0[root@localhost ~]# ls /123q23423
ls: cannot access /123q23423: No such file or directory
[root@localhost ~]# echo "$?" //显示非0表示上一条执行失败2[root@localhost ~]# vim /root/shell/day01/pre.sh#!/bin/bashecho$0echo$$echo$#echo$*[root@localhost ~]# chmod +x /root/shell/day01/pre.sh [root@localhost ~]# /root/shell/day01/pre.sh aa bb cc d4
/root/shell/day01/pre.sh //$0显示的是脚本自己的名称
2546 //$$显示的脚本进程号
4 //$#显示的是脚本位置参数个数
aa bb cc d4 //$*显示所有位置变量的值
#不加引号和加引号的区别[root@localhost ~]# touch a b c //不加引号创建了三个文件[root@localhost ~]# touch "a b c" //加引号创建了一个文件(单引号和双引号都是一样的)[root@localhost ~]# ll
total 4
-rw-r--r-- 1 root root 0 Dec 2217:23 a
-rw-r--r-- 1 root root 0 Dec 2217:23 a b c
-rw-------. 1 root root 1260 May 202021 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Dec 2217:23 b
-rw-r--r-- 1 root root 0 Dec 2217:23 c
drwxr-xr-x 3 root root 19 Dec 2115:56 shell
[root@localhost ~]# rm -rf a b c //这样删除的时候是删除了三个文件[root@localhost ~]# ll
total 4
-rw-r--r-- 1 root root 0 Dec 2217:23 a b c
-rw-------. 1 root root 1260 May 202021 anaconda-ks.cfg
drwxr-xr-x 3 root root 19 Dec 2115:56 shell
[root@localhost ~]# rm -rf "a b c" //这样才能把a b c这个文件删除用来一个引体[root@localhost ~]# ls
anaconda-ks.cfg shell
[root@localhost ~]# hi="world"[root@localhost ~]# echo "$hi" //双引号会把$视为变量的值
world
[root@localhost ~]# echo '$hi' //单引号会把$视为普通字符$hi[root@localhost ~]# echo "$USER id is $UID" //获取当前用户的用户名和ID值
root id is 0[root@localhost ~]# echo '$USER id is $UID' //单引号会原封不动的输出$USERid is $UID[root@localhost ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# test=`grep root /etc/passwd`[root@localhost ~]# echo "$test"
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# test1=$(grep tom /etc/passwd)[root@localhost ~]# echo $test1
tom:x:1001:1001::/home/tom:/bin/bash