2010-06-29 8 views
9

मेरे पास दो बैश स्क्रिप्ट हैं जो लगभग समान हैं। एक काम करता है और कोई नहीं करता और मैं यह नहीं समझ सकता कि क्या हो रहा है। यह एक ठीक काम करता हैबैश स्क्रिप्ट में मानक_इन त्रुटि

:

#!/bin/bash 

CURDIR=$HOME/Documents/Development/road/Earthmoving 
TOL=0.05 

echo -e "\nRunning Unit Tests" 
echo -e "------------------\n" 

for infile in $CURDIR/utest/*.csv 
do 
    file=$(basename $infile .csv) 
    echo -n " Test $file" 
    value=`$CURDIR/Release/earthmove -f $infile` 
    res=`cat $CURDIR/utest/$file.res` 
    if [ "$(echo "$res+$TOL*$res >= $value && $res-$TOL*$res <= $value" | bc)" -eq 1 ]; then 
    echo -e "\t\t PASSED." 
    else 
    echo -e "\t\t FAILED." 
    fi; 
done 

echo "" 

लेकिन यह भी मुझे त्रुटियों के सभी प्रकार देता है:

#!/bin/bash 

CURDIR=$HOME/Documents/Development/road/Vertical 
TOL=0.05 

echo -e "\nRunning Unit Tests" 
echo -e "------------------\n" 

for infile in $CURDIR/utest/*.csv 
do 
    file=$(basename $infile .csv) 
    echo -n " Test $file" 
    value=`$CURDIR/Release/vertical -f $infile` 
    res=`cat $CURDIR/utest/$file.res` 
    if [ "$(echo "$res+$TOL*$res >= $value && $res-$TOL*$res <= $value" | bc)" -eq 1 ]; then 
    echo -e "\t\t PASSED." 
    else 
    echo -e "\t\t FAILED." 
    fi; 
done 

echo "" 

दो फ़ाइलों समान हैं निर्देशिका के अलावा (बनाम कार्यक्षेत्र Earthmoving यहाँ लिपियों हैं) और कार्यक्रम का नाम (धरती बनाम ऊर्ध्वाधर)। मुझे यह पता है क्योंकि मैंने पहली बार कॉपी और पेस्ट करके दूसरा बनाया है। इस में दूसरे पटकथा परिणाम चल रहा है:

Running Unit Tests 
------------------ 

Test flatroad(standard_in) 1: illegal character: S 
(standard_in) 1: syntax error 
(standard_in) 1: illegal character: : 
(standard_in) 2: illegal character: S 
(standard_in) 2: illegal character: : 
(standard_in) 2: syntax error 
(standard_in) 2: illegal character: N 
(standard_in) 2: illegal character: : 
(standard_in) 2: illegal character: I 
(standard_in) 2: illegal character: : 
(standard_in) 2: illegal character: : 
(standard_in) 2: illegal character: O 
(standard_in) 2: illegal character: : 
(standard_in) 3: illegal character: P 
(standard_in) 3: illegal character: : 
(standard_in) 3: syntax error 
(standard_in) 3: illegal character: M 
(standard_in) 3: illegal character: : 
(standard_in) 3: illegal character: H 
(standard_in) 3: illegal character: : 
(standard_in) 3: illegal character: : 
(standard_in) 4: illegal character: P 
(standard_in) 4: illegal character: : 
(standard_in) 4: syntax error 
(standard_in) 4: illegal character: M 
(standard_in) 4: illegal character: : 
(standard_in) 4: illegal character: H 
(standard_in) 4: illegal character: : 
(standard_in) 4: illegal character: : 
(standard_in) 5: syntax error 
(standard_in) 5: illegal character: : 
(standard_in) 6: illegal character: P 
(standard_in) 6: illegal character: : 
(standard_in) 6: illegal character: M 
(standard_in) 6: syntax error 
(standard_in) 6: illegal character: : 
(standard_in) 7: syntax error 
(standard_in) 7: illegal character: : 
(standard_in) 8: illegal character: P 
(standard_in) 8: illegal character: : 
(standard_in) 8: syntax error 
(standard_in) 8: illegal character: M 
(standard_in) 8: illegal character: : 
(standard_in) 15: syntax error 
(standard_in) 16: syntax error 
(standard_in) 16: illegal character: M 
(standard_in) 16: illegal character: I 
(standard_in) 16: illegal character: P 
(standard_in) 17: syntax error 
(standard_in) 18: illegal character: T 
(standard_in) 18: illegal character: S 
(standard_in) 18: illegal character: T 
(standard_in) 18: syntax error 
(standard_in) 19: illegal character: T 
(standard_in) 19: illegal character: S 
(standard_in) 19: illegal character: T 
(standard_in) 19: syntax error 
(standard_in) 20: illegal character: T 
(standard_in) 20: illegal character: S 
(standard_in) 20: illegal character: T 
(standard_in) 20: syntax error 
(standard_in) 21: illegal character: T 
. 
. 
. 
(standard_in) 90: illegal character: I 
(standard_in) 90: illegal character: O 
(standard_in) 90: syntax error 
(standard_in) 90: illegal character: P 
(standard_in) 90: illegal character: I 
(standard_in) 90: illegal character: I 
(standard_in) 90: illegal character: T 
(standard_in) 91: syntax error 
(standard_in) 91: syntax error 
(standard_in) 91: syntax error 
(standard_in) 91: syntax error 
(standard_in) 93: illegal character: S 
(standard_in) 93: syntax error 
(standard_in) 94: illegal character: O 
(standard_in) 94: syntax error 
(standard_in) 95: syntax error 
(standard_in) 96: illegal character: U 
(standard_in) 96: syntax error 
(standard_in) 96: illegal character: ' 
(standard_in) 96: illegal character: O 
(standard_in) 96: illegal character: ' 
       FAILED. 

बहुत अधिक लाइनों हैं जहां "..." है, लेकिन वे मूलतः एक ही विचार पर सिर्फ एक बदलाव कर रहे हैं।

+0

'लंबवत' क्या है? 'धरती' क्या है? – wilhelmtell

+0

क्या आप 'flatroad' फ़ाइल के साथ' $ CURDIR/रिलीज/लंबवत 'चलाने में सक्षम हैं? क्या यह सभी समान त्रुटियों का उत्पादन करता है? –

+0

ऊर्ध्वाधर और earthmove दो सी ++ कार्यक्रम हैं। और हाँ, कमांड लाइन से "vertical -f flatroad.csv" चल रहा है ठीक काम करता है। – Jessica

उत्तर

0

वर्टिकल निर्देशिका की सामग्री की जांच करें। क्या आपकी सीएसवी फाइलों में से एक के नाम पर रिक्त स्थान या विषम वर्ण हैं? चर कि उद्धरण में फ़ाइल का नाम धारण आसपास का प्रयास करें:

"\"${filename}\"" 
+0

वर्तमान में वर्टिकल/यूटेस्ट में मौजूद एकमात्र फ़ाइलें flatroad.csv और flatroad.res हैं। मैंने आपके सुझाव की कोशिश की, और अन्य सभी त्रुटियों के अलावा, अब मुझे निम्नलिखित भी मिलते हैं: "टेस्ट flatroad.csv" बिल्ली:/home/jessica/दस्तावेज़/विकास/सड़क/लंबवत/utest/flatroad। सीएसवी ".res: ऐसी कोई फ़ाइल या निर्देशिका नहीं है" – Jessica

+0

/home/jessica/दस्तावेज़/विकास/सड़क/वर्टिकल/utest में कौन सी फाइलें हैं? इसके अलावा पार्टी में वर्बोज़ मोड चालू करके देखें: $ -v सेट आप के साथ इसे बंद – pborenstein

9

त्रुटि संदेश bc द्वारा उत्पादित कर रहे हैं। समस्या यह है कि "एस: एस: एन: आई :: ओ: पी ..." फ़ाइल में "$ HOME/दस्तावेज़/विकास/सड़क/वर्टिकल/यूटेट/$ file.res" फ़ाइल में कुछ ऐसा नहीं है जो इसमें नहीं है संबंधित फाइल जो दूसरी स्क्रिप्ट में उपयोग की जाती है। संभावना है कि आप उम्मीद करते हैं कि फ़ाइल में जो कुछ भी है, उसके बजाय एक संख्यात्मक मूल्य शामिल हो।

+0

flatroad.res (इस समय निर्देशिका में केवल .res फ़ाइल) "+ v सेट" कर सकते हैं केवल शामिल है " 0.0 "(उद्धरण घटाएं) जो एक संख्यात्मक मान है। – Jessica

+1

@ जेसिका: फिर '$ value' के मान में कुछ ऐसा है जो 'बीसी' समझ में नहीं आता है। –

0

(standard_in) 1: सिंटेक्स त्रुटि

यह त्रुटि पर्ल बीसी आदेश के बजाय का उपयोग करके हल किया जा जाएगा,

$ (पर्ल -e "प्रिंट $ बी + $ ग ")

संबंधित मुद्दे