फाइल करने के लिए Env वेरिएबल्स पास करना


1

मुझे .bash_profileएक बैच फ़ाइल स्क्रिप्ट के लिए env var (मेरे द्वारा घोषित ) पास करने में कठिनाई हो रही है जो BTEQ ऑपरेशन (टेरडेटा में ) को निष्पादित करता है।

.bash_profile में शामिल हैं:

export DBPASSWORD='password'

बैच फ़ाइल में शामिल हैं:

bteq < bteq_execution_test.sql > bteq_execution_test.log 2>&1 ${DBPASSWORD}

मैंने जाँच की कि ${DBPASSWORD}वास्तव में, फ़ाइल में पास हो रहा है - लेकिन इसे BTEQ स्क्रिप्ट में पासवर्ड के रूप में ठीक से स्वीकार नहीं किया जा रहा है, जो कुछ इस तरह दिखता है (भाग जहाँ त्रुटि है वहाँ लॉग इन करें):

.logon mydb/username,$4;

नोट: मैं ${DBPASSWORD}स्थिति द्वारा env var सेट पासवर्ड का संदर्भ दे रहा हूं । कृपया मुझे बताएं कि क्या कोई हाथ दे सकता है। आपका अग्रिम में ही बहुत धन्यवाद!


@ClassStacker: अधिकांश गोले में आदेश महत्वपूर्ण नहीं है - < input cmd > output arg1 arg2साथ ही साथ काम करता है cmd arg1 arg2 < input > output
ग्रिटिटी

दूसरे लुक पर। यहां कोई नहीं $4है। bashअपने आप पुनर्निर्देशन करता है, वे एक स्क्रिप्ट के लिए दृश्यमान नहीं होंगे। यदि bteqएक स्क्रिप्ट है तो यह DBPASSWORDपैरामीटर को देखेगा $1चाहे वह पुनर्निर्देशन से पहले या बाद में रखा गया हो।
CMD

जवाबों:


0

इसलिए मैंने इसका पता लगा लिया और यह एक ऐसा समाधान है जो टर्मिनल में चलाने के लिए वास्तविक आदेश की परवाह किए बिना आम तौर पर काम करेगा। जिस तरह से मैंने किया वह एक "सेटअप" बैच फ़ाइल बनाने के लिए था जो "इको" कमांड का एक गुच्छा चलाता है और उन्हें BTEQ (मेरे उदाहरण में) द्वारा निष्पादित होने के लिए एक दूसरी फ़ाइल के लिए लिखता है। यहाँ मैंने इसे हल किया है (कृपया मेरे मूल पोस्ट में संदर्भ देखें):

bteq_execution_test_setup.bat:

rm bteq_execution_test_setup1.bat
echo '.LOGON mydb/username,' ${DBPASSWORD} ';' > bteq_execution_test_setup1.bat
echo 'insert into mydb.mytable select top 10 feature1, feature2 from mydb.another_table;' >> bteq_execution_test_setup1.bat
echo '.LOGOFF;' >> bteq_execution_test_setup1.bat
echo '.EXIT;' >> bteq_execution_test_setup1.bat
bteq < bteq_execution_test_setup1.bat > bteq_execution_test_setup1.log 2>&1 

फिर बस कमांड को निष्पादित करना:

./bteq_execution_test_setup.bat

आपके (.bash_profile (या .bashrc, .profile, आदि) में घोषित वांछित env var के साथ कमांड (इस मामले में BTEQ) निष्पादित करेगा। आशा है कि यह किसी की मदद करता है, मैंने बहुत से लोगों को तेरदता मंचों पर इस बारे में पूछते देखा!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.