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