2016-01-08 52 views
2

我運行下面這樣Bash shell沒有以我期望的方式參數?

push repo "message"

但是如果我的消息有空間在它的腳本將打破腳本。顯然,解釋者會將任何空格視爲新論點的標誌。如何更改行爲,以便我可以用空格編寫完整的提交消息。

push() { 
    local a=$1 b=$2 
    if [ $# -eq 0 ] 
    then 
    echo "Enter git shortname for first argument" 
    return 
    fi 

    if [ $# -eq 1 ] 
    then 
     b=$(timestamp) 
    fi 
    build 
    git add -A . 
    git commit -m $b 
    git push $a 
    echo "push() completed." 
} 
+0

[使用含有空格作爲單個參數變量(可能的重複http://stackoverflow.com/questions/11411440/using-a -variable-containing-spaces-as-a-single-argument) –

回答

2

正確使用自己的函數中引用:

push() { 
    local a="$1" b="$2" 
    if [ $# -eq 0 ] 
    then 
    echo "Enter git shortname for first argument" 
    return 
    fi 

    if [ $# -eq 1 ] 
    then 
     b=$(timestamp) 
    fi 
    build 
    git add -A . 
    git commit -m "$b" 
    git push "$a" 
    echo "push() completed." 
} 
+0

我從來不用引用任何其他語言的變量,怎麼會這樣呢? –

+0

是的Unix shell在使用和不使用引號時表現得非常不同。 – anubhava

+1

@cadegalt您可以在Bash手冊中閱讀[分詞](https://www.gnu.org/software/bash/manual/bashref.html#Word-Splitting)。 –

相關問題