आपने जो दिखाया है, उसके साथ आपको या तो कोष्ठक से बचना होगा:
echo execute some_procedure\(123,234\) | sqlplus username/[email protected]
या अपने आदेश को दोहरे उद्धरणों में संलग्न करें:
echo "execute some_procedure(123,234)" | sqlplus username/[email protected]
या तो पैराथेंस को समझने की कोशिश कर रहे शेल को रोक देगा, जो आपको एक 'syntax error: '(' unexpected
देगा। या इसी तरह की त्रुटि। इसका वास्तव में Oracle से कोई लेना-देना नहीं है, यह शेल दुभाषिया कैसे काम करता है, इससे पहले कि यह प्रतिध्वनित स्ट्रिंग को SQL*Plus में पाइप करने से पहले काम करता है।
संयोग से, मैं आम तौर पर इस तरह की चीज़ के लिए एक हेरेडोक का उपयोग करता हूं, और कमांड लाइन पर क्रेडेंशियल डालने से बचता हूं ताकि वे ps
के माध्यम से दिखाई न दें।; उदाहरण के लिए:
sqlplus -s /nolog <<!EOF
connect username/[email protected]
execute some_procedure(123,234)
exit
!EOF