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
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Shell脚本中$0, $?, $! 等含义
$$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 $@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的
shell脚本第一行:#!/bin/bash的含义
相信有接触过shell脚本的同学们都应该知道,shell脚本的第一行一般会写有以下字样: #!/bin/bash或者 #!/bin/sh或者 #!/bin/awk 比较常见的说法是:第一行的内容指定了shell脚本解释器的路径,而且这个指定路径只能放在文件的第一行 但我们也知道,在shell脚本里符号#是作为注释符出现的,在其之后的同一行内容会被视为注释进而不执行 那么第一行所
linux shell scripting cookbook 2ed
Linux shell脚本攻略第二版,英文文字版,印度人写的,挺有意思的,不是很难,
bash,shell脚本中的fi的解读
问题if [ -z $APP_DIR ]; then export APP_DIR=pwd fi export FWD_DIR=dirname $APP_DIR/forward 这两段是什么意思啊,主要是那个’-z’ ‘fi’ ‘forward’这三个 ik.qb.data.add(‘page’,’fromWap’,’0’); -z判断变量值是否为空,如果为空则为该变量
Shell脚本中各种符号的意思
$()和${}和$(())和(()) http://www.2cto.com/os/201308/239136.html Shift命令在脚本中的作用 http://blog.csdn.net/zhu_xun/article/details/24796235 UNSET的作用 unset命令用于删除已定义的shell变量(包括环境变量)和shell函数。unset命令不能够删除具有只
shell脚本中的条件测试if中的-z到-d的意思
转载自 http://blog.sina.com.cn/s/blog_67e2ef6a0100tea1.html [ -a FILE ]  如果 FILE 存在则为真。   [ -b FILE ]  如果 FILE 存在且是一个块特殊文件则为真。   [ -c FILE ]  如果 FILE 存在且是一个字特殊文件则为真。   [ -d FILE ]  如果 FILE
shell脚本中的 EOF 是什么意思?
EOF是END Of File的缩写,表示自定义终止符.既然自定义,那么EOF就不是固定的,可以随意设置别名,你可以用EEE,MAMA等等其他的名字都可以。EOF在这里通俗讲就是一个标记,他用来标记一段文字(一般都是多行的,省得编码麻烦,用"<<"加上一个标记就可以把一大段代码存入到一个变量中去了)$a=<< “EOF” 的意思就是说:下一行开始,直到遇见“EOF”为止,所...
Shell脚本中$0、$?、$!等的意义
在阅读别人shell脚本的时候,我们可能会看到类似$0这些变量符号。那么他们是什么意思呢? 变量说明 $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的
Shell中的&&与||的区别
那个 || 刚好完全跟 && 相反,当前一个指令有错误时,在 || 后面的指令才会被执行! (要注意,那个 |  是两个 | ,而 | 按键则是反斜线 \ 同一个按键, 因此,按下 [Shift] 加上 [\] 就会出现那个 | 啰!)  因此,简单的来说,当 ls /tmp/vbirding 发生错误时,才会使用 touch /tmp/vbirding 去建立这个档案 的意思。 是否很有趣
Shell脚本中$0、$?、$!、$$、$*、$#、$@等的意义
变量说明 $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 $@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2"