অনলাইনে শেলচেক ব্যবহার করে আপনি নিজের শেল স্ক্রিপ্টগুলি চেক করতে পারেন (স্ট্যান্ডেলোন সরঞ্জাম হিসাবেও উপলব্ধ)।
এই ক্ষেত্রে, এটি নির্দেশ করবে যে if-বিবৃতিটির পরে [
এবং তার আগে এবং পরে একই লাইনের আগে ]
একটি ;
(বা একটি নতুন লাইন) দরকার then
।
আপনি যখন এটি স্থির করেছেন, তখন আপনাকে জানাতে হবে যে USER_NAME
কোনও কিছুর সূচনা না করেই এটি ব্যবহৃত হয়। এটি কারণ user_name
আপনারও একটি পরিবর্তনশীল (কেস সম্পর্কিত বিষয়) রয়েছে। একই জন্য PASS
এবং pass
।
এটি আপনাকে ম্যাংলিং থেকে read -r
বিরত read
রাখতেও ব্যবহার করতে বলেছে \
(উদাহরণস্বরূপ পাসওয়ার্ডগুলির জন্য গুরুত্বপূর্ণ হতে পারে), এবং sqlplus
শেলটিকে দুর্ঘটনাক্রমে ফাইলের নাম গ্লোবিং এবং শব্দ বিভাজন থেকে রোধ করার জন্য কল করার সময় আপনার ভেরিয়েবলগুলি দ্বিগুণ করা উচিত (আবার এটি গুরুত্বপূর্ণ যদি পাসওয়ার্ডে উদাহরণস্বরূপ, ফাইল গ্লোব্বিং অক্ষর যেমন *
বা স্পেস থাকে)।
কোডটি প্রবেশ করানো এটিকে আরও পাঠযোগ্য করে তুলবে:
#!/bin/bash
read -r -p 'please enter username: ' user_name
IFS= read -rs -p 'please enter password: ' pass
printf 'ORACLE_SID = %s\n' "$ORACLE_SID"
sid=$ORACLE_SID
if [ "$sid" = 'Test' ]; then
echo 'Cannot copy' >&2
exit 1
fi
sqlplus -s -l "$user_name/$pass@$sid" <<'SQL_END'
copy from scott/tiger@orcl insert EMP using select * from EMP
exit
SQL_END
এখানে আমি IFS
পাসওয়ার্ড পড়ার জন্য অস্থায়ীভাবে একটি ফাঁকা স্ট্রিংয়ে সেট করে শীর্ষস্থানীয় বা পিছনে স্থান অক্ষরগুলির সাথে পাসওয়ার্ডগুলি ব্যবহার সম্ভব করে তুলেছি read
।
যুক্তিটি $ORACLE_SID
/ যদি হয় তবে জামিনে আউট হয়ে $sid
যায় Test
। এটি কোনও if
শাখায় স্ক্রিপ্টের মূল অপারেশনাল অংশ থাকা এড়ানো যায় ।