Ravindra BagaleCourses & study guides English

Shell Scripting Complete 2: Bash Variables, Quoting, Command Substitution आणि Parameter Expansion

Variables मुळे script गोष्टी लक्षात ठेवतो: file नाव, date, count. Quoting ठरवतं bash spaces आणि stars text म्हणून घेतो की special characters म्हणून, आणि script bugs चं हे नंबर एक कारण आहे. Command substitution एका command चा output variable मधे ठेवतं. हा chapter तिन्ही step by step शिकवतो, सोबत default values, string tricks, arithmetic, environment variables आणि $0, $$ सारखे special variables.

या chapter मध्ये तुम्ही काय शिकाल

  • Variables बरोबर बनवा आणि वापरा
  • Single quotes, double quotes आणि no quotes समजा
  • $( ) ने command output पकडा
  • Defaults आणि string operations वापरा
  • $(( )) ने integer गणित करा
  • Environment variables export करा

1. रोजचं उदाहरण: स्वयंपाकघरातले label लावलेले डबे

हे का लागतं?

स्वयंपाकघरात प्रत्येक डब्याला label असतं: साखर, मीठ, चहा. Recipe 'साखर टाका' म्हणते तेव्हा label बघून डबा घेता आणि आतलं वापरता. कोणी साखरेच्या डब्यात मीठ ठेवलं तर चहा बिघडतो. Variables म्हणजे label लावलेले डबे, आणि quoting म्हणजे आतलं जसंच्या तसं ठेवणारं झाकण.

हे काय आहे?

डब्याचं label = variable name. आत काय = value. डब्यातून घेणं = $name. झाकण बंद = "$name" (आतलं अख्खं राहतं). Machine मधून डबा भरणं = name=$(command). शेजाऱ्यांना डबा देणं = export.

कसं करायचं (step by step)

Bash line कशी expand करतोLine वाचतो$name आणि $(cmd) बदलतोUnquoted results spaces वर तोडतोUnquoted words मधे * आणि ? expandQuotes काढतोCommand चालवतो
Double quotes steps 3 आणि 4 थांबवतात.

2. Variable बनवा: name=value

हे का लागतं?

तोच path दहा वेळा असलेला script बदलायला अवघड. एका variable मधे ठेवा आणि एका जागी बदला.

हे काय आहे?

name=value असं, = भोवती space नको. नावात letters, digits आणि _, digit ने सुरू नाही. $name किंवा ${name} ने वाचा. स्वतःच्या variables साठी lower case; UPPER case system वापरतो (PATH, HOME). unset name delete करतो. readonly name constant करतो.

कसं करायचं (step by step)

  1. Set करा आणि print.
city=Pune; echo "I live in $city"

Output:

I live in Pune

याचा अर्थ: $city ची value आली.

  1. Spaces बिघडवतात.
city = Pune

Output:

bash: city: command not found

याचा अर्थ: bash ला city command वाटली.

  1. Braces text जोडतात.
f=report; echo "${f}_2026.csv"

Output:

report_2026.csv

याचा अर्थ: Braces शिवाय bash f_2026 नावाचा variable शोधतो.

  1. Constant.
readonly TAX=18; TAX=20

Output:

bash: TAX: readonly variable

याचा अर्थ: बदलता येत नाही.

3. Double quotes: spaces ठेवा, तरी expand

हे का लागतं?

File names आणि user input मधे बहुतेक spaces असतात. Quotes नसतील तर एक नाव दोन arguments होतं आणि command बिघडते.

हे काय आहे?

"double quotes" मधे bash $var, $(cmd) आणि $((math)) बदलतो, पण spaces वर तोडत नाही आणि * किंवा ? expand करत नाही. नियम: कारण नसेल तर नेहमी "$var". आत quote साठी \" आणि literal dollar साठी \$.

कसं करायचं (step by step)

  1. Space असलेलं नाव.
f='Sales Q3.xlsx'; ls -l $f

Output:

ls: cannot access 'Sales': No such file or directory
ls: cannot access 'Q3.xlsx': No such file or directory

याचा अर्थ: Quotes नाही: दोन words मधे तुटलं.

  1. Quoted.
ls -l "$f"

Output:

-rw-r--r-- 1 asha asha 20480 Oct 25 11:00 Sales Q3.xlsx

याचा अर्थ: एक argument, चालतं.

  1. Star star च राहतो.
p='*.log'; echo "$p"

Output:

*.log

याचा अर्थ: Quotes मधे * expand होत नाही.

  1. आत escape.
echo "Price: \$5 for \"chai\""

Output:

Price: $5 for "chai"

याचा अर्थ: Backslash $ आणि " text ठेवतो.

4. Single quotes: सगळं साधा text

हे का लागतं?

कधी कधी $ आणि * जसेच्या तसे हवे, उदा. awk programs, regex किंवा $HOME बद्दल message.

हे काय आहे?

'single quotes' मधे काहीच special नाही: $var नाही, $( ) नाही, \ नाही. Single quote आत single quote ठेवता येत नाही; बंद करा आणि परत उघडा: 'it'\''s'. Fixed text साठी single quotes, variable लागतो तेव्हा double. $'...' हा तिसरा प्रकार \n आणि \t समजतो.

प्रकार$var expand?Spaces राहतात?
no quotesहोनाही, तुटतं
"double"होहो
'single'नाहीहो
$'ansi'नाही, पण \n चालतंहो

कसं करायचं (step by step)

  1. तुलना.
echo "Home is $HOME"; echo 'Home is $HOME'

Output:

Home is /home/asha
Home is $HOME

याचा अर्थ: Single quotes जसंच्या तसं print.

  1. awk ला single quotes.
awk -F: '{print $1}' /etc/passwd | head -2

Output:

root
bin

याचा अर्थ: $1 awk चा, bash चा नाही.

  1. आत quote.
echo 'Ravi'\''s laptop'

Output:

Ravi's laptop

याचा अर्थ: बंद, escaped quote, परत उघडा.

  1. ANSI प्रकार.
echo $'line1\nline2'

Output:

line1
line2

याचा अर्थ: \n नवी line झाली.

5. Command substitution: $(command)

हे का लागतं?

Scripts ना बहुतेक message किंवा file नावात आजची date, server नाव किंवा files ची संख्या लागते.

हे काय आहे?

$(command) command चालवतो आणि त्याचा output त्या जागी ठेवतो, शेवटची new line काढून. जुना प्रकार backticks `command`; $( ) वापरा कारण nest होतं आणि वाचायला सोपं. Quote करा: "$(command)" spaces आणि new lines ठेवतं.

कसं करायचं (step by step)

  1. File नावात date.
today=$(date +%F); echo "backup-$today.tgz"

Output:

backup-2026-10-25.tgz

याचा अर्थ: आधी date command चालली.

  1. Lines मोजा.
users=$(wc -l < /etc/passwd); echo "$users accounts"

Output:

38 accounts

याचा अर्थ: < मुळे wc file नाव print करत नाही.

  1. Nesting.
echo "Kernel dir: $(basename $(dirname /lib/modules/$(uname -r)/kernel))"

Output:

Kernel dir: 6.1.0-18-amd64

याचा अर्थ: $( ) आत $( ) वाचायला सोपं.

  1. New lines ठेवा.
top3=$(ls /etc | head -3); echo "$top3"

Output:

adduser.conf
alternatives
apt

याचा अर्थ: Quoted output प्रत्येक नाव वेगळ्या line वर ठेवतं.

6. Default values आणि checks: ${var:-x} वगैरे

हे का लागतं?

Value नसेल तेव्हा scripts नीट वागायला हवेत, उदा. user argument विसरला.

हे काय आहे?

${var:-default} var रिकामा किंवा unset असेल तर default देतो (var बदलत नाही). ${var:=default} तो साठवतोही. ${var:?message} रिकामा असेल तर message सह script थांबवतो. ${var:+other} var ला value असेल तेव्हाच other देतो. set -u सोबत छान चालतात.

प्रकारvar रिकामा असेल तरvar set असेल तर
${var:-d}d देतोvar देतो
${var:=d}var=d setvar देतो
${var:?msg}error आणि stopvar देतो
${var:+x}रिकामंx देतो

कसं करायचं (step by step)

  1. Default port.
echo "port ${PORT:-8080}"

Output:

port 8080

याचा अर्थ: PORT set नव्हता, म्हणून 8080.

  1. Set करून ठेवा.
: "${ENVNAME:=dev}"; echo $ENVNAME

Output:

dev

याचा अर्थ: : command काही करत नाही, पण expansion dev साठवतं.

  1. आवश्यक.
bash -c 'echo "${DB_HOST:?set DB_HOST first}"'

Output:

bash: line 1: DB_HOST: set DB_HOST first

याचा अर्थ: स्पष्ट message सह script थांबतो.

7. String tricks: length, cut, replace, case

हे का लागतं?

Files rename, extensions काढणं, input साफ करणं ही रोजची कामं. Bash sed किंवा awk शिवाय करू शकतो.

हे काय आहे?

${#v} length. ${v#pat} सुरुवातीपासून सगळ्यात छोटा match काढतो, ${v##pat} सगळ्यात मोठा. ${v%pat} शेवटून काढतो, ${v%%pat} मोठा. ${v/old/new} पहिला बदलतो, ${v//old/new} सगळे. ${v:start:len} भाग घेतो. ${v^^} upper case, ${v,,} lower case.

प्रकारउदाहरण (f=/data/img/photo.big.jpg)Result
${f##*/}फक्त file नावphoto.big.jpg
${f%/*}फक्त folder/data/img
${f%.*}शेवटचं extension काढा/data/img/photo.big
${f##*.}फक्त extensionjpg

कसं करायचं (step by step)

  1. Length.
pin=411038; echo ${#pin}

Output:

6

याचा अर्थ: सहा characters.

  1. Extension बदला.
f=invoice.docx; echo "${f%.docx}.pdf"

Output:

invoice.pdf

याचा अर्थ: %.docx ने शेवट काढला.

  1. सगळे बदला.
s='a b c'; echo "${s// /_}"

Output:

a_b_c

याचा अर्थ: प्रत्येक space _ झाला.

  1. Upper case आणि substring.
code=mh12ab; echo "${code^^} ${code:0:4}"

Output:

MH12AB mh12

याचा अर्थ: ^^ upper, :0:4 पहिले चार.

8. Arithmetic: $(( )), (( )) आणि let

हे का लागतं?

Counters, totals, percentages आणि retries सगळ्यांना numbers लागतात.

हे काय आहे?

$(( expr )) integers मोजतो: + - * / % आणि ** (power). आत names $ शिवाय लिहू शकता. (( count++ )) variable बदलतो. Division decimals टाकतं: 7/2 = 3. Decimals साठी bc किंवा awk. 0 ने सुरू होणारे numbers octal मानले जातात (08 fail), म्हणून zeros काढा किंवा 10#08.

कसं करायचं (step by step)

  1. बेरीज.
a=40; b=2; echo $((a + b))

Output:

42

याचा अर्थ: आत $ नको.

  1. Counter.
n=0; ((n++)); ((n+=5)); echo $n

Output:

6

याचा अर्थ: (( )) variable बदलतो.

  1. Percentage.
used=37; total=50; echo "$(( used * 100 / total ))%"

Output:

74%

याचा अर्थ: आधी गुणा, मग भागा.

  1. bc ने decimals.
echo 'scale=2; 7/3' | bc

Output:

2.33

याचा अर्थ: Bash स्वतः फक्त integers.

9. Environment variables आणि export

हे का लागतं?

Child programs (python, java, दुसरा script) फक्त export केलेले variables बघतात.

हे काय आहे?

साधा variable फक्त current shell मधे. export name त्याला environment variable बनवतो जो प्रत्येक child process ला मिळतो. env किंवा printenv list करतात. VAR=value command फक्त त्या एका command साठी. प्रत्येक login ला हवा तर ~/.bashrc मधे export lines (environment chapter मधे details).

कसं करायचं (step by step)

  1. Export नाही.
color=blue; bash -c 'echo "child sees: $color"'

Output:

child sees:

याचा अर्थ: Child shell ला काहीच मिळालं नाही.

  1. Export.
export color; bash -c 'echo "child sees: $color"'

Output:

child sees: blue

याचा अर्थ: आता environment मधे.

  1. फक्त एका command साठी.
TZ=Asia/Tokyo date +%H:%M; date +%H:%M

Output:

14:35
11:05

याचा अर्थ: TZ फक्त पहिल्या date साठी बदलला.

  1. एक शोधा.
printenv | grep ^LANG

Output:

LANG=en_IN.UTF-8

याचा अर्थ: printenv exported variables दाखवतो.

10. Special variables: $0, $$, $!, $?, $RANDOM, $LINENO

हे का लागतं?

Bash काही variables तुमच्यासाठी भरतो. Logs, temp files आणि error messages साठी उपयोगी.

हे काय आहे?

$0 script नाव. $$ current shell चा PID (unique temp नावांसाठी). $! शेवटच्या background job चा PID. $? शेवटचा exit code. $RANDOM 0-32767 मधला number. $LINENO चालू line number. $SECONDS script सुरू झाल्यापासूनचे seconds. $1, $#, $@ arguments; chapter 3 मधे.

Variableकाय असतं
$0script नाव
$$या shell चा PID
$!शेवटचा background PID
$?शेवटचा exit code
$RANDOMrandom 0-32767
$SECONDSचालू असल्याचे seconds

कसं करायचं (step by step)

  1. Unique temp file.
echo "/tmp/report.$$"

Output:

/tmp/report.48213

याचा अर्थ: प्रत्येक run ला वेगळं.

  1. Background PID.
sleep 30 & echo "started $!"

Output:

[1] 48250
started 48250

याचा अर्थ: नंतर wait किंवा kill साठी $! साठवा.

  1. Timer.
bash -c 'sleep 2; echo "took $SECONDS s"'

Output:

took 2 s

याचा अर्थ: Scripts साठी सोपं timing.

  1. सुरक्षित temp file.
t=$(mktemp); echo "$t"

Output:

/tmp/tmp.Xk29aQ

याचा अर्थ: mktemp random, private file बनवतो.

11. अनेक industries मधली खरी उदाहरणं

हे का लागतं?

तेच Linux skill प्रत्येक प्रकारच्या company मध्ये लागतं. वेगवेगळ्या ठिकाणी पाहिलं की लक्षात राहतं.

हे काय आहे?

प्रत्येक row म्हणजे एक काल्पनिक team. कोण हे वापरतं आणि कसं ते दाखवते.

कसं करायचं (step by step)

Team आणि शहरते कसं वापरतातCommand
Pooja, travel agency, PuneBackup नावात datesbackup-$(date +%F).tgz
Oliver, insurance, ManchesterSpaces असलेल्या नावांसाठी quotescp "$src" "$dst"
Mei, e-commerce, Singapore${PORT:-8080} ने default ports${PORT:-8080}
Ahmed, telecom, RiyadhExtensions मोठ्या प्रमाणात rename${f%.txt}.csv
Ana, pharma, LisbonDisk वापराचे percent$(( used*100/total ))
Rahul, fintech, MumbaiRequired secrets :? सह${API_KEY:?missing}

12. नेहमीच्या errors आणि त्यांचे fixes

हे का लागतं?

हे errors सगळ्यांना येतात. कारण माहीत असलं की तास वाचतात.

हे काय आहे?

आधी नेमका message वाचा. मग खालच्या row शी जुळवा.

कसं करायचं (step by step)

दिसणारा errorका होतंFix कसा करायचा
command not found (after name = value)= भोवती spacesSpaces काढा.
name=value
No such file or directory for a name with spacesVariable quote नाहीDouble quotes वापरा.
ls "$f"
$HOME printed literallySingle quotes वापरलेExpansion साठी double quotes.
echo "$HOME"
readonly variableConstant बदलणंदुसरं नाव.
readonly -p
value too great for base (error token is "08")सुरुवातीचा zero = octalBase 10 force.
echo $((10#08))
syntax error: invalid arithmetic operator (error token is ".5")$(( )) मधे decimalsbc किंवा awk.
echo '2.5*2' | bc
child script does not see my variableExport नाहीexport करा.
export name
parameter null or not set${var:?} आणि var रिकामाआधी variable set.
export DB_HOST=db1
unexpected EOF while looking for matching quoteQuote बंद नाहीप्रत्येक quote बंद.
bash -n s.sh

13. Troubleshooting step by step

हे का लागतं?

Spaces आणि रिकाम्या values दिसाव्यात म्हणून markers सह variable print करा.

हे काय आहे?

वरून खाली जा. ज्या step ला problem दिसतो तिथे थांबा.

कसं करायचं (step by step)

  1. नेमकी value.
echo "[$name]"
  1. Type आणि attributes.
declare -p name
  1. Export आहे?
printenv name
  1. Expansion trace.
bash -x s.sh
  1. Unquoted वापर शोधा.
shellcheck s.sh
  1. Hidden characters.
printf '%q\n' "$name"

14. Lab 1: Backup name builder

हे का लागतं?

Host, date आणि folder वापरून safe backup file नाव बनवणारा script variables, $( ) आणि string tricks ने लिहा.

हे काय आहे?

पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).

कसं करायचं (step by step)

  1. Folder.
mkdir -p ~/lab38 && cd ~/lab38
  1. Variables.
src="/var/www/my site"; host=$(hostname -s); day=$(date +%F)
  1. नाव बनवा.
base=${src##*/}; name="${host}-${base// /_}-${day}.tgz"; echo "$name"

Output:

web01-my_site-2026-10-25.tgz
  1. Length check.
echo ${#name}

Output:

28
  1. Upper case tag.
echo "${host^^}"

Output:

WEB01
  1. Default target folder.
echo "${DEST:-/backup}/$name"

Output:

/backup/web01-my_site-2026-10-25.tgz

15. Lab 2: Quoting प्रयोग आणि export

हे का लागतं?

Quotes result कसा बदलतात आणि export child scripts ना values कशा देतो ते डोळ्याने बघा.

हे काय आहे?

पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).

कसं करायचं (step by step)

  1. अवघड files.
touch 'a b.txt' c.txt && ls

Output:

a b.txt  c.txt
  1. Unquoted loop.
for f in $(ls); do echo "[$f]"; done

Output:

[a]
[b.txt]
[c.txt]
  1. Glob वापरा.
for f in *.txt; do echo "[$f]"; done

Output:

[a b.txt]
[c.txt]
  1. Child script.
printf '#!/bin/bash\necho "mode=$MODE"\n' | tee child.sh && chmod +x child.sh
  1. Export शिवाय.
MODE=prod; ./child.sh

Output:

mode=
  1. Export सह.
export MODE; ./child.sh

Output:

mode=prod
  1. गणित.
files=$(ls | wc -l); echo "$(( files * 2 )) after copy"

Output:

6 after copy

Ravindra Bagale's Tip

Quote every variable: "$var" and "$(cmd)". If you remember only one rule from this chapter, remember this one. It stops spaces and stars in names from breaking your script or deleting the wrong files.

16. नेहमी विचारले जाणारे प्रश्न

प्र. $var की ${var}?

सारखंच; नंतर text असेल तर braces.

प्र. = भोवती space का नको?

Bash नाव command म्हणून वाचेल.

प्र. Backticks की $( )?

$( ): nest होतं आणि वाचायला सोपं.

प्र. Bash decimals करतो?

नाही; bc किंवा awk.

प्र. सगळे variables कसे बघायचे?

declare -p किंवा set.

प्र. Lower की upper नावं?

तुमच्यासाठी lower, environment साठी upper.

प्र. export -n काय करतो?

Export mark काढतो.

प्र. Passwords साठी $RANDOM safe?

नाही; openssl rand.

17. मुलाखत प्रश्न आणि उत्तरं

Beginner level

प्र. Variable कसा बनवायचा?

name=value, spaces नाहीत.

प्र. Single vs double quotes?

Single: literal. Double: variables expand.

प्र. Command output साठवायचा?

x=$(command).

प्र. String ची length?

${#var}.

Mid level level

प्र. ${v:-d} vs ${v:=d}?

पहिला फक्त d देतो; दुसरा साठवतोही.

प्र. "$var" quote का?

Word splitting आणि globbing थांबवायला.

प्र. Extension काढायचं?

${f%.*}.

प्र. export काय करतो?

Child processes ना variable देतो.

Senior level

प्र. Bash expansion order?

Brace, tilde, parameter/command/arithmetic, word split, glob, quote removal.

प्र. for f in $(ls) वाईट का?

नावं spaces वर तुटतात; globs वापरा.

प्र. Arithmetic मधे 08?

10#08 किंवा leading zeros काढा.

प्र. Secret required कसा?

set -u सह ${SECRET:?message}.

घरी करून बघा

  1. तुमचा user, /etc मधल्या files ची संख्या आणि / वर वापरलेल्या disk चे percent दाखवणारा script लिहा.
  2. Spaces असलेलं file नाव variable मधे घ्या आणि एकदा quotes सह आणि एकदा शिवाय print करा. काय बदललं ते लिहा.

सराव Tasks

या scenario बद्दल

Vidarbha Cotton Mills हा नागपूर मधला वस्त्रोद्योग व्यवसाय आहे. Ganesh Wankhede त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 21

सोपं Variable set

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: Kothrud शब्द area नावाच्या variable मधे.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Quotes सह print

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: branch variable double quotes मधे print.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं whoami पकडा

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: whoami चा output me variable मधे.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Length

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: mobile variable ची length print.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Upper case

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: state variable upper case मधे.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Lower case

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: CODE variable lower case मधे.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं गुणाकार

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: Bash arithmetic ने 12 गुणिले 8.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Export

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: APP_ENV variable qa value सह एका command मधे export.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम नावात महिना

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: 2026-10 सारखा current year-month date ने ym variable मधे.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Default value

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: REGION variable print करा, रिकामा असेल तर ap-south-1.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Extension काढा

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: doc variable .odt शेवटाशिवाय print.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम फक्त file नाव

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: p path variable चा फक्त file नाव भाग (शेवटच्या slash नंतर), parameter expansion ने.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम सगळे बदला

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: title variable मधला प्रत्येक space dash करून print.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम पहिले तीन

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: ifsc variable चे पहिले 3 characters.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम बाकी

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: 47 ला 6 ने भागल्यावर बाकी.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Decimals

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: bc ने 22 भागिले 7, 3 decimals सह.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम एका command साठी

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: फक्त त्या command साठी TZ Europe/London ठेवून date.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Constant

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: 0.18 value सह read-only GST variable.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड Required

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: TOKEN print करा, रिकामा असेल तर "TOKEN missing" message सह थांबा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड Leading zero

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: Base ten force करून 09 अधिक 1.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड Temp folder

का: चुकीचं quoting BIZ च्या scripts spaces असलेल्या file नावांवर बिघडवतं.

काय करायचं: Private temporary directory बनवा आणि path tmpd मधे.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

थोडक्यात सांगायचं तर

  1. name=value, spaces नाहीत; $name ने वाचा.
  2. Double quotes expand करतात पण spaces ठेवतात.
  3. Single quotes सगळं literal ठेवतात.
  4. $(cmd) output पकडतं.
  5. ${v:-d}, ${#v}, ${v%.*} आणि $(( )) defaults, length, cuts आणि गणित.
  6. export child processes ना variables देतो.

उजळणी, तुलना आणि मुलाखत cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

4 rules मधे Quotes. Single quotes: जसाच्या तसा text. Double quotes: variables expand. Variables नेहमी quote. उदाहरण.
उजळणी card: 4 rules मधे Quotes · PNG download करा · Card page उघडा
Parameter expansion. रिकामं असेल तर default. Length. Suffix काढा. Replace.
उजळणी card: Parameter expansion · PNG download करा · Card page उघडा
'single' vs "double". जसाच्या तसा text. / $var आणि $( ) expand.
तुलना: 'single' vs "double" · PNG download करा · Card page उघडा
var=x vs export var=x. फक्त हा shell. / हा shell आणि child programs.
तुलना: var=x vs export var=x · PNG download करा · Card page उघडा
Single vs double quotes?. Single: काहीच expand नाही. Double: $var आणि $( ) expand. Try.
मुलाखत card: Single vs double quotes? · PNG download करा · Card page उघडा
$( ) vs backticks?. दोन्ही output capture. $( ) nest होतो, वाचायला सोपा. उदाहरण.
मुलाखत card: $( ) vs backticks? · PNG download करा · Card page उघडा
Variable export का?. साधे variables याच shell मधे. export children ला देतो. उदाहरण.
मुलाखत card: Variable export का? · PNG download करा · Card page उघडा
Bash मधे math?. Integers साठी $(( )). Bash मधे decimals नाहीत. उदाहरण.
मुलाखत card: Bash मधे math? · PNG download करा · Card page उघडा

अजून cards: Ravi Sir's Cards.