Shell Scripting Complete 7: Bash Arrays आणि Associative Arrays (declare -A) सोप्या भाषेत
Array म्हणजे अनेक values ठेवणारा एक variable: servers, files किंवा ports ची list. Associative array key-value pairs ठेवतो: server ते IP, user ते team, city ते PIN code. हा chapter indexed arrays, items add आणि remove करणं, safe loop, slices, file array मधे वाचायला mapfile, arrays ने command arguments बनवणं, आणि counting आणि lookups साठी declare -A सह associative arrays शिकवतो.
या chapter मध्ये तुम्ही काय शिकाल
- Indexed arrays बनवा आणि items वाचा
- Items add, बदल आणि remove
- "${arr[@]}" आणि indexes ने loop
- mapfile ने files वाचा
- Safe command arguments बनवा
- Maps आणि counts साठी declare -A
1. रोजचं उदाहरण: डबा आणि phone book
हे का लागतं?
Stacked डब्याला numbered boxes असतात: box 0 भात, box 1 वरण, box 2 भाजी. 'box 1' मागितला की वरण मिळतं. हा indexed array. Phone book वेगळं: 'Ravi' शोधता आणि त्याचा number मिळतो. Number नाही, नाव वापरता. हा associative array.
हे काय आहे?
डबा = indexed array. Box number = index (0 पासून). Box मधलं अन्न = element. Boxes ची संख्या = ${#arr[@]}. Phone book = associative array. नाव = key. Phone number = value.
कसं करायचं (step by step)
2. Indexed array बनवा
हे का लागतं?
Space-separated string spaces असलेल्या नावांवर तुटते. Array प्रत्येक item वेगळा आणि अख्खा ठेवतो.
हे काय आहे?
a=(one two 'three four') array बनवतो. Index 0 पासून. ${a[0]} पहिला item; ${a[-1]} शेवटचा (bash 4.3+). ${a[@]} सगळे items, ${#a[@]} count, ${!a[@]} indexes. साधा $a म्हणजे फक्त ${a[0]}. declare -p a सगळं दाखवतो.
| प्रकार | काय देतो |
|---|---|
| ${a[0]} | पहिला item |
| ${a[-1]} | शेवटचा item |
| "${a[@]}" | सगळे, प्रत्येक quoted |
| ${#a[@]} | count |
| ${!a[@]} | indexes |
| $a | ${a[0]} सारखं |
कसं करायचं (step by step)
- बनवा आणि वाचा.
cities=(Pune Mumbai 'Navi Mumbai'); echo "${cities[2]}"
Output:
Navi Mumbai
याचा अर्थ: Index 2 म्हणजे तिसरा item.
- Count आणि शेवटचा.
echo "${#cities[@]} cities, last is ${cities[-1]}"
Output:
3 cities, last is Navi Mumbai
याचा अर्थ: -1 शेवटून मोजतो.
- सगळं बघा.
declare -p cities
Output:
declare -a cities=([0]="Pune" [1]="Mumbai" [2]="Navi Mumbai")
याचा अर्थ: Index आणि value pairs.
- साधा $name trap.
echo $cities
Output:
Pune
याचा अर्थ: फक्त पहिला item.
3. Items add, बदल आणि remove
हे का लागतं?
Script चालताना lists वाढतात: failed hosts, upload करायच्या files, report करायचे errors.
हे काय आहे?
a+=(new) शेवटी जोडतो. a[5]=x index 5 set करतो (arrays मधे gaps असू शकतात). unset 'a[1]' item 1 काढतो पण gap राहतो; renumber साठी a=("${a[@]}"). a=() रिकामा करतो; unset a delete करतो. unset मधे 'a[1]' quote करा म्हणजे a1 नावाची file glob ला गोंधळवत नाही.
कसं करायचं (step by step)
- Append.
failed=(); failed+=(web3); failed+=(db2); echo "${failed[@]}"
Output:
web3 db2
याचा अर्थ: += शेवटी जोडतो.
- बदला.
failed[0]=web4; echo "${failed[0]}"
Output:
web4
याचा अर्थ: Index ने assign.
- Remove आणि gap.
n=(a b c d); unset 'n[1]'; echo "${!n[@]}"
Output:
0 2 3
याचा अर्थ: Index 1 आता नाही.
- Renumber.
n=("${n[@]}"); echo "${!n[@]} -> ${n[*]}"
Output:
0 1 2 -> a c d
याचा अर्थ: Gaps शिवाय पुन्हा बनवलं.
4. Arrays वर safely loop
हे का लागतं?
बहुतेक array काम loop असतं. Spaces असलेली नावं टिकतात की नाही ते quoting ठरवतं.
हे काय आहे?
for v in "${a[@]}" प्रत्येक item अख्खा देतो. for i in "${!a[@]}" indexes देतो, position हवी असेल किंवा items बदलायचे असतील तर उपयोगी. "${a[*]}" IFS च्या पहिल्या char ने सगळे items एका string मधे जोडतो, print साठी सोपं: (IFS=,; echo "${a[*]}").
कसं करायचं (step by step)
- प्रत्येक item.
files=('Q1 sales.csv' summary.csv); for f in "${files[@]}"; do echo "upload [$f]"; done
Output:
upload [Q1 sales.csv]
upload [summary.csv]
याचा अर्थ: Spaces राहिले.
- Unquoted तुटतं.
for f in ${files[@]}; do echo "[$f]"; done
Output:
[Q1]
[sales.csv]
[summary.csv]
याचा अर्थ: कधीही unquoted नको.
- Index सह.
for i in "${!files[@]}"; do echo "$((i+1)). ${files[i]}"; done
Output:
1. Q1 sales.csv
2. summary.csv
याचा अर्थ: Numbered list.
- Commas ने जोडा.
hosts=(web1 web2 db1); (IFS=,; echo "${hosts[*]}")
Output:
web1,web2,db1
याचा अर्थ: IFS बदल ( ) मधेच राहतो.
5. Slices, items ची length आणि search
हे का लागतं?
Batch processing, 'पहिले 10' reports आणि membership तपासणं नेहमी लागतं.
हे काय आहे?
${a[@]:start:count} slice घेतो. ${#a[2]} item 2 ची length. ${a[@]/old/new} प्रत्येक item मधे replace. Value array मधे आहे का ते loop करून compare करा, किंवा associative array वापरा (मोठ्या lists साठी जलद).
कसं करायचं (step by step)
- Slice.
nums=(10 20 30 40 50); echo "${nums[@]:1:3}"
Output:
20 30 40
याचा अर्थ: Index 1 पासून 3.
- 2 चे batches.
for ((i=0; i<${#nums[@]}; i+=2)); do echo "batch: ${nums[@]:i:2}"; done
Output:
batch: 10 20
batch: 30 40
batch: 50
याचा अर्थ: API limits साठी छान.
- सगळ्यांमधे replace.
imgs=(a.jpeg b.jpeg); echo "${imgs[@]/%.jpeg/.jpg}"
Output:
a.jpg b.jpg
याचा अर्थ: /% शेवटी match.
- आहे का?
in_list(){ local x=$1; shift; for v in "$@"; do [[ $v == "$x" ]] && return 0; done; return 1; }; in_list db1 web1 db1 && echo found
Output:
found
याचा अर्थ: "${a[@]}" arguments म्हणून द्या.
6. mapfile / readarray: file array मधे
हे का लागतं?
Hosts किंवा IDs ची list array मधे load केली की count, slice आणि अनेक वेळा loop करता येतं.
हे काय आहे?
mapfile -t arr < file प्रत्येक line एक item; -t new line काढतो. readarray हीच command. Command output साठी mapfile -t arr < <(cmd). -s 1 पहिली line (header) skip, -n 10 जास्तीत जास्त 10. एक line words मधे तोडायला read -ra arr <<< "$line".
कसं करायचं (step by step)
- Lines items मधे.
printf 'web1\nweb2\ndb1\n' | tee servers.txt; mapfile -t srv < servers.txt; echo "${#srv[@]} servers: ${srv[*]}"
Output:
3 servers: web1 web2 db1
याचा अर्थ: प्रत्येक line एक item.
- Command मधून.
mapfile -t big < <(du -sh /var/* 2>/dev/null | sort -rh | head -3); printf '%s\n' "${big[@]}"
Output:
1.2G /var/lib
800M /var/log
40M /var/cache
याचा अर्थ: Process substitution array ठेवतो.
- Header skip.
mapfile -t -s 1 rows < people.csv; echo "${rows[0]}"
Output:
1,Asha,Pune
याचा अर्थ: -s 1 ने header काढला.
- Line तोडा.
read -ra parts <<< 'mon tue wed'; echo "${parts[1]}"
Output:
tue
याचा अर्थ: -a array भरतो.
7. Arrays ने command arguments बनवा
हे का लागतं?
Options string मधे ठेवले तर spaces आणि quotes वर तुटतात. Optional flags बनवायचा arrays हाच बरोबर मार्ग.
हे काय आहे?
args=() ने सुरू करा आणि तुकडे जोडा: args+=(--exclude "$pat"). cmd "${args[@]}" ने चालवा. प्रत्येक element नेमका एक argument म्हणून जातो, म्हणून आतले spaces safe. Professional scripts rsync, curl आणि docker commands असेच बनवतात.
कसं करायचं (step by step)
- String मार्ग तुटतो.
opts="-name 'my file.txt'"; find /tmp $opts
Output:
find: paths must precede expression: `file.txt''
याचा अर्थ: String मधले quotes खरे quotes नसतात.
- Array मार्ग चालतो.
opts=(-name 'my file.txt'); find /tmp "${opts[@]}"
Output:
/tmp/my file.txt
याचा अर्थ: प्रत्येक element एक argument.
- Optional flags.
verbose=1; args=(-a); (( verbose )) && args+=(-v); args+=(--exclude '*.tmp'); echo rsync "${args[@]}" src/ dst/
Output:
rsync -a -v --exclude *.tmp src/ dst/
याचा अर्थ: गरज असेल तेव्हाच flags.
- नेमके arguments.
printf '[%s]\n' "${args[@]}"
Output:
[-a]
[-v]
[--exclude]
[*.tmp]
याचा अर्थ: *.tmp एक argument राहिला.
8. Associative arrays: declare -A
हे का लागतं?
'या server चा IP कोणता' किंवा 'या user ची team कोणती' असे lookups numbers ऐवजी keys ने सोपे.
हे काय आहे?
declare -A m बनवतो (आवश्यक; bash 4+). m[key]=value set, ${m[key]} वाचतो, ${!m[@]} keys list, ${#m[@]} count. [[ -v m[key] ]] key आहे का तपासतो. Keys चा क्रम guaranteed नाही; print करताना sort करा. Quote केल्यास keys मधे spaces चालतात: m['Navi Mumbai']=400703.
| काम | Syntax |
|---|---|
| create | declare -A m |
| set | m[k]=v |
| get | ${m[k]} |
| keys | ${!m[@]} |
| exists? | [[ -v m[k] ]] |
| delete key | unset 'm[k]' |
कसं करायचं (step by step)
- बनवा.
declare -A pin=([Pune]=411001 [Nashik]=422001 ['Navi Mumbai']=400703); echo "${pin[Nashik]}"
Output:
422001
याचा अर्थ: नावाने शोधा.
- Keys आणि values.
for c in "${!pin[@]}"; do echo "$c=${pin[$c]}"; done | sort
Output:
Nashik=422001
Navi Mumbai=400703
Pune=411001
याचा अर्थ: sort स्थिर क्रम देतो.
- आहे का?
[[ -v pin[Satara] ]] && echo yes || echo 'no Satara'
Output:
no Satara
याचा अर्थ: -v key तपासतो.
- declare -A विसरलात.
unset m; m[web]=1; m[db]=2; declare -p m
Output:
declare -a m=([0]="2")
याचा अर्थ: Indexed मानला; text keys 0 झाल्या.
9. Associative arrays ने counting आणि grouping
हे का लागतं?
'प्रत्येक service चे किती errors' किंवा 'प्रत्येक IP चे किती hits' हा रोजचा log प्रश्न.
हे काय आहे?
मोजायची गोष्ट key म्हणून आणि loop मधे ((count[$key]++)). शेवटी keys आणि counts print करा, sort -k2 -nr ने count प्रमाणे. Group पण: list[$team]+="$user ". फार मोठ्या files साठी awk जलद, पण medium data साठी हे स्पष्ट.
कसं करायचं (step by step)
- Status प्रमाणे count.
declare -A hits; while read -r ip _ _ _ _ _ _ _ code _; do ((hits[$code]++)); done < access.log; for k in "${!hits[@]}"; do echo "$k ${hits[$k]}"; done | sort -k2 -nr
Output:
200 912
404 37
500 4
याचा अर्थ: Status code 9 वा field होता.
- Team प्रमाणे users.
declare -A team; while IFS=, read -r u t; do team[$t]+="$u "; done < <(printf 'meera,dev\nkunal,ops\nasha,dev\n'); for t in "${!team[@]}"; do echo "$t: ${team[$t]}"; done | sort
Output:
dev: meera asha
ops: kunal
याचा अर्थ: += text जोडतो.
- Unique items.
declare -A seen; for x in b a b c a; do seen[$x]=1; done; echo "${!seen[@]}" | tr ' ' '\n' | sort | tr '\n' ' '
Output:
a b c
याचा अर्थ: Keys स्वभावतः unique.
10. अनेक industries मधली खरी उदाहरणं
हे का लागतं?
तेच Linux skill प्रत्येक प्रकारच्या company मध्ये लागतं. वेगवेगळ्या ठिकाणी पाहिलं की लक्षात राहतं.
हे काय आहे?
प्रत्येक row म्हणजे एक काल्पनिक team. कोण हे वापरतं आणि कसं ते दाखवते.
कसं करायचं (step by step)
| Team आणि शहर | ते कसं वापरतात | Command |
|---|---|---|
| Aditi, e-commerce, Pune | Deploy साठी server ते IP map | declare -A ip=([web1]=10.0.1.5) |
| Ben, broadcasting, London | Array मधे rsync args | rsync "${args[@]}" |
| Min-jun, gaming, Seoul | Service नुसार errors | ((cnt[$svc]++)) |
| Layla, airline, Cairo | mapfile ने host list | mapfile -t hosts < hosts.txt |
| Mateo, fintech, Buenos Aires | Slices मधे batch API calls | ${ids[@]:i:50} |
| Swapnil, insurance, Nagpur | Failures गोळा करून report | failed+=("$h") |
11. नेहमीच्या errors आणि त्यांचे fixes
हे का लागतं?
हे errors सगळ्यांना येतात. कारण माहीत असलं की तास वाचतात.
हे काय आहे?
आधी नेमका message वाचा. मग खालच्या row शी जुळवा.
कसं करायचं (step by step)
| दिसणारा error | का होतं | Fix कसा करायचा |
|---|---|---|
Only first item printed | "${a[@]}" ऐवजी $a | "${a[@]}" वापरा.echo "${a[@]}" |
Items with spaces split | Unquoted ${a[@]} | Quote करा.for x in "${a[@]}" |
Text keys collapsed to [0] | declare -A नाही | आधी declare.declare -A m |
declare: -A: invalid option | जुना bash 3 (macOS) | bash 4+ install.brew install bash |
bad array subscript | रिकामी key | Key रिकामी नाही हे तपासा.[[ -n $k ]] && m[$k]=1 |
Array empty after pipe | while | Subshell ने हरवला | < <(cmd) किंवा mapfile.mapfile -t a < <(cmd) |
New line at end of every item | -t शिवाय mapfile | -t जोडा.mapfile -t a < f |
unbound variable with set -u on empty array | जुना bash आणि रिकामा array | ${a[@]+"${a[@]}"} किंवा bash 4.4+.echo ${a[@]+"${a[@]}"} |
Arguments wrong when stored in a string | Array ऐवजी string | Array बनवा.args=(-name "$n") |
12. Troubleshooting step by step
हे का लागतं?
declare -p array मधे नेमकं काय आहे ते दाखवतो, type आणि indexes सह.
हे काय आहे?
वरून खाली जा. ज्या step ला problem दिसतो तिथे थांबा.
कसं करायचं (step by step)
- Dump.
declare -p a
- Count.
echo ${#a[@]}
- प्रत्येक item boxed.
printf '[%s]\n' "${a[@]}"
- Indexes.
echo "${!a[@]}"
- Bash version.
echo $BASH_VERSION
- Lint.
shellcheck s.sh
13. Lab 1: Arrays सह server inventory
हे का लागतं?
mapfile ने servers load करा, ping करा, failures array मधे गोळा करा आणि summary दाखवा.
हे काय आहे?
पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).
कसं करायचं (step by step)
- Folder.
mkdir -p ~/lab43 && cd ~/lab43 && printf 'localhost\n127.0.0.1\nno.such.host\n' | tee inv.txt
- Load.
mapfile -t inv < inv.txt; echo "${#inv[@]} servers"
Output:
3 servers
- Check.
ok=(); bad=(); for h in "${inv[@]}"; do if ping -c1 -W1 "$h" &>/dev/null; then ok+=("$h"); else bad+=("$h"); fi; done
- Summary.
echo "up=${#ok[@]} down=${#bad[@]}"; printf 'DOWN: %s\n' "${bad[@]}"
Output:
up=2 down=1
DOWN: no.such.host
- Join.
(IFS=,; echo "up: ${ok[*]}")
Output:
up: localhost,127.0.0.1
- Inspect.
declare -p bad
Output:
declare -a bad=([0]="no.such.host")
14. Lab 2: declare -A ने key नुसार count
हे का लागतं?
System वर वापरलेले login shells मोजा आणि users ना shells शी map करा.
हे काय आहे?
पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).
कसं करायचं (step by step)
- Declare.
declare -A cnt usr
- passwd वाचा.
while IFS=: read -r u _ _ _ _ _ sh; do ((cnt[$sh]++)); usr[$u]=$sh; done < /etc/passwd
- Counts.
for s in "${!cnt[@]}"; do echo "${cnt[$s]} $s"; done | sort -nr
Output:
22 /usr/sbin/nologin
3 /bin/bash
1 /bin/sync
- Lookup.
echo "root uses ${usr[root]}"
Output:
root uses /bin/bash
- आहे का?
[[ -v usr[nobody99] ]] || echo 'no such user'
Output:
no such user
- एकूण keys.
echo "${#usr[@]} users, ${#cnt[@]} shells"
Output:
26 users, 3 shells
Ravindra Bagale's Tip
Store lists in arrays, not in space-separated strings, and always expand them as "${arr[@]}". When you need lookups by name or counts, use declare -A and remember to declare it first.
Ravindra Bagale's Tip – मराठी
Lists arrays मधे ठेवा, space-separated strings मधे नाही, आणि नेहमी "${arr[@]}" ने expand करा. नावाने lookups किंवा counts लागत असतील तर declare -A वापरा आणि आधी declare करायला विसरू नका.
Ravindra Bagale's Tip – हिंदी
Lists arrays में रखिए, space-separated strings में नहीं, और हमेशा "${arr[@]}" से expand कीजिए. नाम से lookups या counts चाहिए तो declare -A इस्तेमाल कीजिए और पहले declare करना न भूलिए.
15. नेहमी विचारले जाणारे प्रश्न
प्र. Index कुठून?
0.
प्र. "${a[@]}" vs "${a[*]}"?
वेगळे items vs एक जोडलेली string.
प्र. Array sort?
mapfile -t s < <(printf '%s\n' "${a[@]}" | sort).
प्र. sh मधे arrays?
नाही; फक्त bash, zsh, ksh.
प्र. Function ला array?
"${a[@]}" किंवा nameref.
प्र. Array export?
शक्य नाही; file मधे लिहा.
प्र. Key क्रम?
Guaranteed नाही; sort.
प्र. 2D arrays?
m[row,col] सारख्या keys ने.
16. मुलाखत प्रश्न आणि उत्तरं
Beginner level
प्र. Array बनवायचा?
a=(x y z).
प्र. Items ची संख्या?
${#a[@]}.
प्र. Item add?
a+=(new).
प्र. पहिला item?
${a[0]}.
Mid level level
प्र. Safe loop?
for x in "${a[@]}".
प्र. File array मधे?
mapfile -t a < file.
प्र. Associative array?
declare -A m; m[k]=v.
प्र. Key तपासायची?
[[ -v m[k] ]].
Senior level
प्र. Commands arrays मधे का?
प्रत्येक element एक argument, spaces safe.
प्र. unset gaps; fix?
a=("${a[@]}").
प्र. Counting साठी arrays vs awk?
Medium data साठी arrays स्पष्ट; मोठ्या files साठी awk जलद.
प्र. Portability?
-A साठी bash 4+; macOS मधे bash 3.2.
घरी करून बघा
- तुमची पाच आवडती ठिकाणं array मधे ठेवा आणि numbered print करा, मग तिसरं काढून पुन्हा print करा.
- Home folder मधे प्रत्येक extension च्या किती files आहेत ते declare -A ने मोजा.
सराव Tasks
Nairobi Ride हा नैरोबी मधला वाहतूक व्यवसाय आहे. Wanjiru Kamau त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे KES मध्ये मोजले जातात आणि AWS resources af-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 21
सोपं Array बनवा
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: east west north items सह zones array बनवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं पहिला item
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: zones array चा पहिला item.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं शेवटचा item
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: Negative index ने zones array चा शेवटचा item.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं सगळे items
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: zones array चे सगळे items, प्रत्येक quoted.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Count
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: zones array मधे किती items.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Append
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: zones array च्या शेवटी south जोडा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Inspect
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: zones array ची पूर्ण definition.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Map बनवा
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: stockqty नावाचा रिकामा associative array बनवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Key set
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: stockqty map मधे rice key 40.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Indexes
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: zones array चे indexes.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Index 3 set
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: zones array चा index 3 central करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Item 1 काढा
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: zones array मधून index 1 काढा, element quote करून.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Items loop
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: zones array वर loop, प्रत्येक item print, variable z.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Slice
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: zones array मधे index 1 पासून 2 items.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम File array मधे
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: vendors.txt vend array मधे, प्रत्येक line एक item, new lines शिवाय.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Keys list
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: stockqty map च्या सगळ्या keys.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Key आहे
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: stockqty मधे dal key असेल तर yes.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड Gaps बंद
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: zones array पुन्हा बनवा म्हणजे indexes मधे gaps नाहीत.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड Pipe ने जोडा
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: Subshell मधे zones चे सगळे items | ने जोडून print.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड Command array मधे
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: ls /etc/cron.d चा output jobs array मधे, new lines शिवाय.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड Count वाढवा
का: BIZ servers, users आणि counts च्या lists arrays मधे ठेवतो.
काय करायचं: $code मधल्या key चा count hitsby map मधे एकने वाढवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
17. संबंधित chapters
- DevOps साठी Linux Ops Refresh
- Automation साठी Bash Scripting
- Linux grep आणि find Commands Examples सह
- Linux Servers मध्ये Passwordless SSH
थोडक्यात सांगायचं तर
- a=(x y) बनवतो; index 0 पासून.
- "${a[@]}" सगळे items, ${#a[@]} count, ${!a[@]} indexes.
- a+=(x) जोडतो; unset 'a[i]' काढतो.
- mapfile -t file load करतो.
- Command args arrays ने.
- Keys, lookups आणि counts साठी declare -A.
उजळणी, तुलना आणि मुलाखत cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.




![${a[@]} vs ${a[*]}?. "${a[@]}" items वेगळे. "${a[*]}" एक string. Safe loop.](../../../aws/ravi-sirs-cards/cards/mr/int-lx7-int-arrq.webp)



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