2 zqh2007 zqh2007 于 2014.12.05 17:19 提问

请教一个linux shell脚本的意思
 function maybe_prompt_user() {
    if $ASSUME_YES; then
        return 0
    else
        read -p "$1"
        if [[ $REPLY =~ ^[Yy]$ ]]; then
            return 0
        else
            return 1
        fi  
    fi  
}

这段脚本是什么意思,没太看明白,哪位高手指点一下,谢谢!

2个回答

eagleyan
eagleyan   Rxr 2014.12.06 01:24
已采纳

=~ 表示正则match
^[Yy]$表示match y或者Y, laiconglin的解释有一点问题
^这个符号表示非得意思 - 这是错误的,这个^在这里表示match开始,而不是非,[^Yy]里面的^才是非,这里表示不match像ay,TY这样的结果。

至于read那句就是用$1的字符提醒用户要输入什么,结果放到变量REPLY.你可以这么调用maybe_prompt_user
maybe_prompt_user "(Y/y/N/N):"

eagleyan
eagleyan $表示结束、[]表示可选
接近 3 年之前 回复
zqh2007
zqh2007 ^[Yy]$中的$表示结束吗,另外[[表示什么意思?
接近 3 年之前 回复
zqh2007
zqh2007 ^[Yy]$中的$表示结束吗,另外[[表示什么意思?
接近 3 年之前 回复
laiconglin
laiconglin   2014.12.05 22:40

assume yes 解释

read解释

有一些bash程序会接受-y 这样的参数,这样在程序安装的时候,用户可以不用按yes,表示默认yes。
如果没有设置默认的参数,那么需要用户输入yes or no。

^这个符号表示非得意思。$表示结束。[Yy]表示Y 或者y,这一部分是正则表达式的东西。

大概就是这样的。

Csdn user default icon
上传中...
上传图片
插入图片