2013-03-06 94 views
3

我的脚本中有很多是/否的答案。 如何创建一个函数来最小化我的脚本的大小?bash是否功能

我有以下几点:

function ask { 
    read -n 1 -r 
    if [[ $REPLY =~ ^[Yy]$ ]] 
    then 
      return 1; 
    else 
      exit 
      echo "Abort.." 
    fi 
} 

ask "Continue? [y/N] " 

它工作正常。但问题“继续[Y/N]没有显示我如何?‘转让’这个文本我的功能

回答

4

您可以使用$ 1个变量:

function ask { 
    echo $1  # add this line 
    read -n 1 -r 
    if [[ $REPLY =~ ^[Yy]$ ]] 
    then 
      return 1; 
    else 
      exit 
      echo "Abort.." 
    fi 
} 

编辑:如指出@cdarke,“回响”的呼叫,可避免由于在读了“-p”开关:!

# echo $1 
# read -n 1 -r 
read -n 1 -r -p "$1" 
+0

哦,这是非常简单的 非常感谢你:) – Vince 2013-03-06 07:41:11

+2

你不需要的回声, Bash中的'read'有一个'-p'选项来提示,'read'也可以o在ksh中提示,但语法是'var?prompt'。 – cdarke 2013-03-06 08:08:47

+0

@cdarke是的,但它也与ksh/zsh coproc读取选项冲突,这就是为什么我通常会推荐它的原因。如果与'-e'结合使用,'-p'在Bash中有一些优点,否则它相当于'printf%s'提示符'>&2',否则我会说它更好。 – ormaaj 2013-03-06 08:53:50