shell学习之—Bash内部变量—位置参数—特殊参数

继续再来两个内部变量 $TMOUT $UID

内部变量之$TMOUT
先来看一下概念:
作为内部变量read的默认超时秒数。read我会在接下来的博客中详细提到。
首先此变量需要时一个非零的值。想想也是对的,超时秒数是零的话肯定是不行的。
废话少说,来一个脚本解释一下:
#vim Timeout.sh

#!/bin/bash
#==================================================
#
#               FILE:Timeout.sh
#               AUTHOR:Xie_qc  
#               CREATEED:14/03/2019
#===================================================
set  -o  nounset
#此命令可检测变量是否存在,如果不存在,bash报错并停止
TMOUT=3

echo  "Are you sure  (Y/N)"
read  input

if [ "$input" == "Y" ];then
        echo  "Contime.."
else
        echo  "Exit!"
fi

我们来测试一下效果:

[root@xieqc shell]# sh  Timeout.sh
Are you sure  (Y/N)
Y
Contime..
[root@xieqc shell]# sh  Timeout.sh
Are you sure  (Y/N)
Exit!

在上面的栗子中,如果等你三秒后还没有输入,则脚本推出!

下一个$UID

当前用户的账号标识码
可以理解为用户账号的身份证号码
需要注意的是,UID是一个只读变量,不能进行修改
不说废话,上脚本:
vim uaroot.sh

#!/bin/bash
#==============================================
#       FIEL:uaroot.sh
#       AUTHOR:Xie_qc 
#       CREADTED: 14/03/2019
#
#+=============================================

root_uid=0
if [ "$UID" -eq "$root_uid" ];then
        echo  "you  are  root"
else
        echo  "you are  just  an  ordinary  user."
fi

exit 0
//以此来判断用户 是不是root

内部变量告一段落,我们继续看一看位置参数

位置参数

bash中的位置参数,除了0以外的数字来进行表示
来来看一下使用的格式: 使用set命令进行赋值,用$[N] 来进行调取 0-9可以用$N来调取

举个栗子:

[root@xieqc shell]# set  1  2  3  four  five  six  7  8  9  ten
[root@xieqc shell]# echo "$1  $2  $3  $4  $5  $6  $6  $7  $8  $9  $[10]"
1  2  3  four  five  six  six  7  8  9  10

上面的栗子告诉我们栗子真的很好吃。。。
10以上的数字必须用[]中括号括起来

注意:位置变量不能赋值语句来赋值
只能通过set或者shift来设置和取消

在脚本中可以 读取的位置变量在脚本名字的后面,用空格分隔,从1开始的位置变量
上脚本:

#!/bin/bash
#====================================
#
#       FILE:show_positional_param.sh
#       AUTHOR: Xie_qc
#       CREATED: 14/03/2019   19:45
#
#======================================

echo  "Argument  1 : $1"
echo  "Argument  2 : $2"
echo  "Argument  3 : $3"
echo  "Argument  4 : $4"
echo  "Argument  5 : $5"

[root@xieqc shell]# sh  show_positional_parm.sh one  two  three  four  five
Argument  1 : one
Argument  2 : two
Argument  3 : three
Argument  4 : four
Argument  5 : five

从结果可以看到使用方式。继续学习下一个:

特殊参数:* @ # ? - $ ! 0 _

看到这些符号就头疼,别着急,我们一个一个来

特殊参数 *
  • 显示所有位置参数
    #set one two three
    #echo "$*"
    one two three
特殊参数 ?
  • 最近一个执行的命令的退出状态
#touch   newfile

#echo   $?
0
#ls  new  file
newfile

#echo  $?
0

#rm  -rf   newfile
#echo   $?
0
#ls  newfile
ls:newfile: No  such  file  or  directory

#echo  $?
2

可以看出,如果命令执行正确,则返回值为0,错误就是非0值

特殊参数 -
  • 扩展为当前的选项标志
特殊参数 $
  • 扩展为当前shell的进程号
#echo   $$
28072
特殊参数!
  • 扩展为最近执行的后台命令的进程号
[root@xieqc shell]# sleep  10  &
[1] 13410
[root@xieqc shell]# echo  $!
13410
//栗子很清楚了不是么。。。
特殊参数0
  • 扩展为shell脚本的名称
  • 也就是 $0 是代表脚本本身的名字
特殊参数@
  • 相当于一下子调用所有位置变量
特殊参数#
  • 统计位置变量的个数,显示结果为有多少个位置参数
好了,木有了…

上面有几个就不举栗子了,感兴趣的童鞋可以自己去操作一下,记得用$符号进行调用哦

猜你喜欢

转载自blog.csdn.net/xie_qi_chao/article/details/88559493