जवाबों:
${ }
किसी वैरिएबल को संलग्न करने के लिए उपयोग करें ।
घुंघराले कोष्ठक के बिना:
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
भी काम किया होगा। जब चर का मूल्य कुछ शेल विशेष वर्ण (व्हाट्सएप और \[?*
) हो सकता है, तो उन्हें चर विस्तार के आसपास की आवश्यकता होती है । मैं दृढ़ता से सभी चर विस्तार और कमांड प्रतिस्थापन के आसपास दोहरे उद्धरण लगाने की सलाह देता हूं, अर्थात, हमेशा लिखें "$WEBSITE"
और "$(mycommand)"
।
अधिक जानकारी के लिए, $ VAR बनाम $ {VAR} देखें और उद्धृत करने के लिए या नहीं ।
मैं आमतौर पर उद्धरण का उपयोग करता हूं, जैसे echo "$WEBSITE.sql"
।
तो आप इसे लिख सकते हैं:
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > "$WEBSITE.sql"
.
एक चर नाम में एक वैध चरित्र नहीं है; देख हिलाना का जवाब अगर आप एक स्ट्रिंग मान्य वर्ण के साथ शुरू होता है कि श्रेणीबद्ध करना चाहते हैं (उदाहरण के लिए "$ WEBSITEsql" होगा काम नहीं)