Bash-变量variable(二)

紧接着上一篇的变量继续介绍学习吧,变量可太麻烦了,Bash的认识还比较浅,不够深入,很多的内建变量还用不上,不过还是要先备着,慢慢深入也会慢慢发现这些变量的用处,比如上文的$REPLY变量,read和select缺失变量名的情况下,值会被赋予$REPLY。

$SECONDS ##记录脚本的执行时间,可以用于监控脚本各模块执行时间,也可以控制脚本执行时间
vim seconds.sh
#!/bin/bash
TIME_LIMIT=100
INTERVAL=2
while [ $SECONDS -le $TIME_LIMIT ]
do
  echo "the script running $SECONDS s"
  sleep $INTERVAL
done
./seconds.sh
> the script running 0 s
> the script running 2 s
> the script running 4 s
> the script running 6 s

$SHELLOPTS ##记录了shell中已启用的选项列表

$SHLVL ##当前shell的层级,即嵌套了多少层的Bash,和$BASH_SUBSHELL无关,()可以开启SUBSHELL

$TMOUT ##当TMOUT被设置为非0值得时候,shell会在设定值之后登出,可以和read联用实现限时输入
export TMOUT=10 ##10秒之后当前连接会中断
vim tmout.sh
#!/bin/bash
TMOUT=10
read -p "please input the song you favirate in $TMOUT s" song
if [ -z "$song" ];then
  echo "no answer"
fi
exit 0
##不过上述的限时输入并不好用,read -t可以实现相同功能,abs也提供了stty方法实现,太复杂了。。。

$UID ##用户UID,常写在脚本里面作判断,不允许普通用户执行某些脚本,whoami一样可以实现
vim test.sh
#!/bin/bash
if [ $UID -eq 0 ];then
  continue
else
  echo "this script can only run by root"
  exit 1
fi

$! $_用的不多,自行查阅吧

3.declare和typeset,变量属性的声明

之前的文章有介绍,Bash变量是一个弱变量,变量属性的声明会给脚本增加属性追踪的负担,一般不要去给变量进行属性声明。但是有几个参数还是可以用的,参考如下

declare -r variable ##同readonly variable,设置变量属性只读
declare -a array ##声明数组
declare -f ##任意参数会输出已经定义过的所有函数
declare -x ##同export

还有一个重点是declare variable可以限制变量的作用域。

vim var.sh
#!/bin/bash
foo(){
declare FOO="bar"
}

bar ()
{
foo
echo ${FOO:-empty}
}
./var.sh
> empty

4.RANDOM随机数生成

这里只介绍$RANDOM生成随机数,真随机还是伪随机就不介绍了,我对真伪随机还是比较感兴趣的,去百度了一下,各种算法介绍,不懂,先放着,后续有机会再学习。

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇