2012-09-02 28 views
9

मेरे पास यह नया कार्य एक नया जैकिल पोस्ट बनाने के लिए है; लेकिन यह तर्क देता है क्योंकि कमांड नहीं मिला है। यहाँ स्क्रिप्ट है:बैश फ़ंक्शन तर्क त्रुटि देता है "कमांड नहीं मिला"

function new_post() { 
    if [ -z "$1" ] 
    then 
     read -p "Post Title:" TITLE 
    else 
     TITLE= "$1" 
    fi 
    FILE=$(echo $TITLE | tr A-Z a-z | tr ' ' _) 
    echo -e '---\nlayout: post\ntitle: '$TITLE'\npublished: false\n---\n' > $(date '+%Y-%m-%d-')"$FILE"'.md' 
} 

लेकिन जब भी मैं इसे चलाने के लिए कोशिश यह रिटर्न:

$>new_post "Hello World" 
-bash: Hello World: command not found 

यह एक कमांड के रूप में तर्क भागने की कोशिश कर प्रतीत होता है।

मैं भी इस की कोशिश की और एक ही परिणाम

मिला
$>TITLE= "Hello World" && echo -e ---layout: post\ntitle: "$TITLE"\n--- 
-bash: Hello World: command not found 

किसी को भी मुझे बता सकते हैं मैं गलत क्या कर रहा हूँ?

उत्तर

14

यह TITLE= "$1" में स्थान हो सकता है जो त्रुटि का कारण बनता है। TITLE="$1"

+3

निश्चित रूप से है। 'VAR = VALUE प्रोग्राम 'केवल' PROGRAM 'के वातावरण के लिए एक चर' VAR' परिभाषित करता है। ओपी के मामले में शेल कमांड के रूप में '" $ 1 "' और 'TITLE =' को इसके लिए एक खाली (खाली) वातावरण चर की परिभाषा के रूप में व्याख्या करता है। –

0

मेरे मामले में साथ प्रयास करें:

echo "Deploy of `$1` to `$2` project? (Y/N)" 

मुद्दा भी उपस्थित थे। जब मैंने हटा दिया [``] यह चला गया है। सुनिश्चित नहीं है कि आपने एक पूर्ण स्क्रिप्ट चिपकाई है लेकिन तर्कों के लिए डबल कोट्स से सावधान रहें।

इसी तरह के उत्तर https://askubuntu.com/questions/180320/bash-script-program-with-parameters-as-a-single-variable-command-not-found