2013-03-06 86 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