ಬ್ಯಾಷ್ WHILE- ಕುಣಿಕೆಗಳು ಬರೆಯುವುದು ಹೇಗೆ

ಆಜ್ಞೆಗಳು, ಸಿಂಟ್ಯಾಕ್ಸ್ ಮತ್ತು ಉದಾಹರಣೆಗಳು

ಸ್ಕ್ರಿಪ್ಟ್ ಫೈಲ್ನಲ್ಲಿ ಬರೆದು ನಂತರ ಅದನ್ನು ಚಾಲನೆ ಮಾಡುವ ಮೂಲಕ ನೀವು ಆಜ್ಞೆಗಳನ್ನು ಅನುಕ್ರಮವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು.

ಸ್ಕ್ರಿಪ್ಟ್ ಫೈಲ್ ಸರಳವಾಗಿ ಒಂದು ಪಠ್ಯ ಫೈಲ್ ಆಗಿದೆ, ಸಾಮಾನ್ಯವಾಗಿ. ಎಸ್ಎಚ್ ಫೈಲ್ ವಿಸ್ತರಣೆಯೊಂದಿಗೆ, ಆಜ್ಞಾ ಸಾಲಿನ ( ಶೆಲ್ ) ನಿಂದ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಅನುಕ್ರಮ ಸೂಚನೆಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.

ಲೂಪ್ ಉದಾಹರಣೆಗಳು

ಸ್ವಲ್ಪ ಸಮಯ ಲೂಪ್ಗೆ ಉದಾಹರಣೆಯಾಗಿದೆ. ಕಾರ್ಯಗತಗೊಳಿಸಿದಾಗ, ಈ ಸ್ಕ್ರಿಪ್ಟ್ ಫೈಲ್ ಪರದೆಯ ಮೇಲೆ 1 ರಿಂದ 9 ಸಂಖ್ಯೆಗಳನ್ನು ಮುದ್ರಿಸುತ್ತದೆ. ಫಾರ್-ಲೂಪ್ಗಿಂತ ಮುಕ್ತಾಯ ಸ್ಥಿತಿಯನ್ನು ಸೂಚಿಸಲು ಹೇಳಿಕೆ-ಹೇಳಿಕೆ ನಿಮಗೆ ಹೆಚ್ಚು ನಮ್ಯತೆಯನ್ನು ನೀಡುತ್ತದೆ.

#! / bin / bash count = 1 ಆದರೆ [$ count -le 9] ಪ್ರತಿಧ್ವನಿ "$ count" ನಿದ್ರೆ 1 ((ಎಣಿಕೆ ++)) ಮಾಡಲಾಗುತ್ತದೆ

ಉದಾಹರಣೆಗೆ, ಇನ್ಕ್ರಿಮೆಂಟ್ ಸ್ಟೇಟ್ಮೆಂಟ್ ಅನ್ನು ಹೊರತುಪಡಿಸಿ ಹಿಂದಿನ ಲಿಪಿಯನ್ನು ಇನ್ಫೈನೈಟ್ ಲೂಪ್ ಮಾಡಬಹುದು ((ಎಣಿಕೆ ++)) ":

#! / bin / bash count = 1 ಆದರೆ [$ count -le 9] ಪ್ರತಿಧ್ವನಿ "$ count" ನಿದ್ರೆ 1 ಮಾಡಲಾಗುತ್ತದೆ

"ನಿದ್ರೆ 1" ಹೇಳಿಕೆ ಪ್ರತಿ ಪುನರಾವರ್ತನೆಯ ಮೇಲೆ 1 ಸೆಕೆಂಡ್ಗೆ ಮರಣದಂಡನೆಯನ್ನು ವಿರಾಮಗೊಳಿಸುತ್ತದೆ. ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅಂತ್ಯಗೊಳಿಸಲು Ctrl + C ಕೀಬೋರ್ಡ್ ಶಾರ್ಟ್ಕಟ್ ಬಳಸಿ.

ನೀವು ಕೊಲೊನ್ ಅನ್ನು ಸ್ಥಿತಿಯಂತೆ ಇರಿಸುವ ಮೂಲಕ ಅನಂತವಾದ ಲೂಪ್ ಅನ್ನು ರಚಿಸಬಹುದು:

#! / bin / bash count = 1: ಯಾವಾಗ ಎಕೋ "$ ಎಣಿಕೆ" ನಿದ್ರೆ 1 ((ಎಣಿಕೆ ++)) ಮಾಡಲಾಗುತ್ತದೆ

ಸಂದರ್ಭದಲ್ಲಿ-ಲೂಪ್ನಲ್ಲಿ ಅನೇಕ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ಬಳಸಲು, ನೀವು ಎರಡು ಚದರ ಬ್ರಾಕೆಟ್ ಸಂಕೇತನವನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ:

ಎಣಿಕೆ = 1 ಮಾಡಲಾಗುತ್ತದೆ = 0 [[$ count -le 9] && [$ done == 0]] ಪ್ರತಿಧ್ವನಿ "$ ಎಣಿಕೆ" ನಿದ್ರೆ 1 ((ಎಣಿಕೆ ++)) [$ count == 5]; ನಂತರ $ done = 1 fi ಮಾಡಲಾಗುತ್ತದೆ

ಈ ಲಿಪಿಯಲ್ಲಿ, ವೇರಿಯೇಬಲ್ "ಮುಗಿದಿದೆ" ಅನ್ನು 0 ಗೆ ಆರಂಭಿಸಲಾಗಿರುತ್ತದೆ ಮತ್ತು ನಂತರ ಎಣಿಕೆ 5 ತಲುಪಿದಾಗ 1 ಗೆ ನಿಗದಿಪಡಿಸಲಾಗುತ್ತದೆ. ಲೂಪ್ ಪರಿಸ್ಥಿತಿಯು ಹೇಳಿದಾಗ "ಲೂಪ್" ಒಂಬತ್ತು ಕ್ಕಿಂತ ಕಡಿಮೆ ಮತ್ತು "ಮುಗಿದ" ಸೊನ್ನೆಗೆ. ಆದ್ದರಿಂದ ಲೂಪ್ಗಳು 5 ರವರೆಗೆ ಸಮನಾಗಿರುವಾಗ ನಿರ್ಗಮಿಸುತ್ತದೆ.

"&&" ಎಂದರೆ ತಾರ್ಕಿಕ "ಮತ್ತು" ಮತ್ತು "||" ತಾರ್ಕಿಕ "ಅಥವಾ" ಎಂದರ್ಥ.

"" ಮತ್ತು "ಮತ್ತು" ಅಥವಾ "ಪರಿಸ್ಥಿತಿಗಳಲ್ಲಿ ಸಂಯೋಜನೆಗಳಿಗೆ ಪರ್ಯಾಯ ಸಂಕೇತ" -a "ಮತ್ತು" -o "ಏಕ ಚದರ ಬ್ರಾಕೆಟ್ಗಳೊಂದಿಗೆ. ಮೇಲಿನ ಸ್ಥಿತಿ:

[[$ count -le 9] && [$ done == 0]]

... ಹೀಗೆ ಬರೆಯಬಹುದು:

[$ count -le 9] -a [$ done == 0]

ಒಂದು ಪಠ್ಯ ಕಡತವನ್ನು ಓದುವುದು ವಿಶಿಷ್ಟವಾಗಿ ಸ್ವಲ್ಪ ಲೂಪ್ನೊಂದಿಗೆ ಮಾಡಲಾಗುತ್ತದೆ. ಕೆಳಗಿನ ಉದಾಹರಣೆಯಲ್ಲಿ, ಬ್ಯಾಷ್ ಸ್ಕ್ರಿಪ್ಟ್ ವಿಷಯಗಳ ಸಾಲನ್ನು "inventory.txt:" ಎಂಬ ಫೈಲ್ನ ಪ್ರಕಾರವಾಗಿ ಓದುತ್ತದೆ.

FILE = inventory.txt exec 6

ಮೊದಲ ಸಾಲು ಇನ್ಪುಟ್ ಫೈಲ್ ಹೆಸರನ್ನು "FILE" ವೇರಿಯೇಬಲ್ಗೆ ನಿಯೋಜಿಸುತ್ತದೆ. ಎರಡನೇ ಸಾಲಿನ ಕಡತ ವಿವರಣಾಕಾರ "6" ನಲ್ಲಿ "ಪ್ರಮಾಣಿತ ಇನ್ಪುಟ್" ಅನ್ನು ಉಳಿಸುತ್ತದೆ (ಇದು 3 ಮತ್ತು 9 ರ ನಡುವಿನ ಯಾವುದೇ ಮೌಲ್ಯ). ಸ್ಕ್ರಿಪ್ಟ್ನ ಕೊನೆಯಲ್ಲಿ "ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಇನ್ಪುಟ್" ಅನ್ನು ಫೈಲ್ ವಿವರಣಾಕಾರಕ್ಕೆ "0" ಗೆ ಪುನಃಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಿದೆ ("ಎಕ್ಸೆಕ್ 0 3 ನೇ ಸಾಲಿನಲ್ಲಿ ಇನ್ಪುಟ್ ಫೈಲ್ ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್ಗೆ 0" ಅನ್ನು ನಿಗದಿಪಡಿಸಲಾಗಿದೆ "ಇದು" ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಇನ್ಪುಟ್ಗಾಗಿ "ಓದಲು" ಹೇಳಿಕೆ ಪ್ರತಿ ಪುನರಾವರ್ತನೆಯ ಮೇಲೆ ಫೈಲ್ನಿಂದ ಒಂದು ಸಾಲಿನ ಓದುತ್ತದೆ ಮತ್ತು ಅದನ್ನು "ಲೈನ್ 1" ವೇರಿಯಬಲ್ಗೆ ನಿಯೋಜಿಸುತ್ತದೆ.

ಸ್ವಲ್ಪ ಸಮಯದ ಲೂಪ್ನಿಂದ ಅಕಾಲಿಕವಾಗಿ ನಿರ್ಗಮಿಸಲು, ನೀವು ಈ ರೀತಿಯ ಬ್ರೇಕ್ ಹೇಳಿಕೆಯನ್ನು ಬಳಸಬಹುದು:

ಎಣಿಕೆ = 1 ಪೂರ್ಣಗೊಂಡಿದೆ = 0 [$ ಎಣಿಕೆ -ಲಿ 9] ಪ್ರತಿಧ್ವನಿ "$ ಎಣಿಕೆ" ನಿದ್ರೆ 1 ((ಎಣಿಕೆ ++)) [$ ಎಣಿಕೆ == 5] ನಂತರ ವಿರಾಮದ ಪ್ರತಿಧ್ವನಿ ಪೂರ್ಣಗೊಂಡಿದೆ

ಬ್ರೇಕ್ ಸ್ಟೇಟ್ಮೆಂಟ್ ಲೂಪ್ ಮಾಡುವಾಗ ಕೊನೆಗೆ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಅದರ ನಂತರ ಯಾವುದೇ ಹೇಳಿಕೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಹೇಳಿಕೆ "ಪ್ರತಿಧ್ವನಿ ಪೂರ್ಣಗೊಂಡಿದೆ."

ಮುಂದುವರೆದ ಹೇಳಿಕೆ, ಮತ್ತೊಂದೆಡೆ, ಪ್ರಸ್ತುತ ಪುನರಾವರ್ತನೆಯ ಉಳಿದ ಸಮಯದಲ್ಲಿ ಲೂಪ್ ಹೇಳಿಕೆಯನ್ನು ಮಾತ್ರ ಬಿಟ್ಟುಬಿಡುತ್ತದೆ ಮತ್ತು ಮುಂದಿನ ಪುನರಾವರ್ತನೆಗೆ ನೇರವಾಗಿ ದಾಟುತ್ತದೆ:

ಎಣಿಕೆ = 1 ಮಾಡಲಾಗುತ್ತದೆ = 0 ಆದರೆ [$ ಎಣಿಕೆ -9]] [$ count == 5] ವೇಳೆ ನಿದ್ರೆ 1 ((ಎಣಿಕೆ ++) ಮಾಡಿ) "ಎಣಿಕೆ"

ಈ ಸಂದರ್ಭದಲ್ಲಿ, ವೇರಿಯೇಬಲ್ "ಎಣಿಕೆ" ತಲುಪಿದಾಗ "ಮುಂದುವರಿಸು" ಹೇಳಿಕೆ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತದೆ. ಇದರರ್ಥ ಈ ಪುನರಾವರ್ತನೆಯಲ್ಲಿ (ಎಕೋ "$ ಎಣಿಕೆ") ಅನ್ನು "ಪುನರಾವರ್ತನೆಯ" ಮೌಲ್ಯವು 5 ಆಗಿದ್ದರೆ) ಕಾರ್ಯಗತಗೊಳಿಸುವುದಿಲ್ಲ.