等待指定用户登录系统
今天在一本Shell书上看到了wait_for_user的函数,原函数如下:
wait_for_user () {
until who | grep “$1” > /dev/null
do
sleep ${2:-30} //这里的意思是如果参数2存在且非null,则返回$2,否则返回30
done
}
但是以上并不是完全正确的,因为 grep “$1” 是部分匹配,如果有用户zhangsan, zhang,那么$1=zhang时,zhangsan也能被匹配到,故需要稍作修改
wait_for_user () {
until who | grep “^${1} ” > /dev/null //匹配以$1开头的第一个单词知道遇到空格,注意这里不能写成$1或者{$1}, $1不会替换成参数值,{$1}替换后会类似{zhang}
do
sleep ${2:-30} //这里的意思是如果参数2存在且非null,则返回$2,否则返回30
done
}
浙公网安备 33010602011771号