উত্তর:
${ }
একটি পরিবর্তনশীল ঘেরে ব্যবহার করুন ।
কোঁকড়ানো বন্ধনী ছাড়া:
VAR="foo"
echo $VAR
echo $VARbar
দিতে হবে
foo
এবং কিছুই নয়, কারণ ভেরিয়েবলের $VARbar
অস্তিত্ব নেই।
কোঁকড়ানো বন্ধনী সহ:
VAR="foo"
echo ${VAR}
echo ${VAR}bar
দিতে হবে
foo
foobar
প্রথমটি বদ্ধ করা $VAR
প্রয়োজনীয় নয়, তবে একটি ভাল অনুশীলন।
আপনার উদাহরণের জন্য:
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword ${WEBSITE} > ${WEBSITE}.sql
এই কাজ bash
, zsh
, ksh
, হয়তো অন্যদের খুব।
${ }
খেয়াল রাখুন যা কোনও অর্থে সংঘবদ্ধ নয়। উদাহরণস্বরূপ, ELP=elp && echo $ELP && man --h${EPL}
কাজ করে না।
আপনি যা কিছু করতে চান তা যেমন ভেরিয়েবলের বিষয়বস্তুগুলিকে একত্রিত করুন, যেমন
/usr/bin/mysqldump --opt -u root --ppassword "$WEBSITE" > "$WEBSITE.sql"
ডাবল উদ্ধৃতিগুলি যুক্তিযুক্ত নয়: এখানেও >$WEBSITE.sql
কাজ করা যেত। পরিবর্তনশীল বিস্তারের আশেপাশে এগুলি দরকার হয় যখন ভেরিয়েবলের মানটিতে কিছু শেল বিশেষ অক্ষর (সাদা স্থান এবং \[?*
) থাকতে পারে । আমি দৃ vari়ভাবে সমস্ত ভেরিয়েবল বিস্তৃতকরণ এবং কমান্ড প্রতিস্থাপনের অর্থাত্ সর্বদা লিখুন "$WEBSITE"
এবং ডাবল কোট রাখার পরামর্শ দিচ্ছি "$(mycommand)"
।
আরও তথ্যের জন্য, $ VAR বনাম {{VAR see দেখুন এবং উদ্ধৃতি দিতে বা উদ্ধৃতি না করা দেখুন ।
আমি সাধারণত উক্তি ব্যবহার করি, যেমন echo "$WEBSITE.sql"
।
সুতরাং আপনি এটি লিখতে পারে:
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > "$WEBSITE.sql"
.
একটি পরিবর্তনশীল নামে বৈধ অক্ষর নয়; দেখতে ফক্কড় এর উত্তর যদি আপনি একটি স্ট্রিং বৈধ অক্ষর দিয়ে শুরু যে কনক্যাটেনেট করতে চান (যেমন "$ WEBSITEsql" would কাজ নয়)