ಬ್ಯಾಷ್-ಸ್ಕ್ರಿಪ್ಟ್ಗೆ ವಾದಗಳನ್ನು ಹೇಗೆ ಹಾದುಹೋಗುವುದು

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

ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಆಜ್ಞಾ ಸಾಲಿನಿಂದ ಕರೆಯುವಾಗ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳನ್ನು ಸ್ವೀಕರಿಸುವಂತಹ ಒಂದು ಬ್ಯಾಷ್ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ನೀವು ಬರೆಯಬಹುದು. ಇನ್ಪುಟ್ ನಿಯತಾಂಕಗಳ (ಆರ್ಗ್ಯುಮೆಂಟ್ಸ್) ಮೌಲ್ಯಗಳನ್ನು ಅವಲಂಬಿಸಿ ಸ್ಕ್ರಿಪ್ಟ್ ಸ್ವಲ್ಪ ವಿಭಿನ್ನ ಕಾರ್ಯನಿರ್ವಹಣೆಯನ್ನು ನಿರ್ವಹಿಸಲು ಈ ವಿಧಾನವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.

ಉದಾಹರಣೆಗೆ, ನೀವು ಫೈಲ್ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಿರ್ವಹಿಸುವಂತಹ "stats.sh" ಎಂಬ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಅದರ ಪದಗಳನ್ನು ಎಣಿಸುವಂತಹವು ಇರಬಹುದು. ನೀವು ಅನೇಕ ಫೈಲ್ಗಳಲ್ಲಿ ಆ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಬಳಸಲು ಬಯಸಿದರೆ, ಫೈಲ್ ಹೆಸರನ್ನು ಆರ್ಗ್ಯುಮೆಂಟ್ನಂತೆ ಹಾದುಹೋಗುವುದು ಉತ್ತಮ, ಆದ್ದರಿಂದ ನೀವು ಎಲ್ಲಾ ಫೈಲ್ಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಅದೇ ಲಿಪಿಯನ್ನು ಬಳಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಬೇಕಾದ ಕಡತದ ಹೆಸರು "ಹಾಡಿಪಟ್ಟಿಯ" ಆಗಿದ್ದರೆ, ನೀವು ಕೆಳಗಿನ ಆಜ್ಞಾ ಸಾಲಿನ ನಮೂದಿಸಿ:

ಷಾ ಅಂಕಿಅಂಶಗಳು

ವಾದಗಳು $ 1, $ 2, $ 3, ಇತ್ಯಾದಿಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸ್ಕ್ರಿಪ್ಟ್ನೊಳಗೆ ಪ್ರವೇಶಿಸಲ್ಪಡುತ್ತವೆ, ಅಲ್ಲಿ $ 1 ಮೊದಲ ಆರ್ಗ್ಯುಮೆಂಟ್ ಅನ್ನು ಉಲ್ಲೇಖಿಸುತ್ತದೆ, ಎರಡನೇ ಆರ್ಗ್ಯುಮೆಂಟ್ಗೆ $ 2, ಮತ್ತು ಹೀಗೆ. ಈ ಕೆಳಗಿನ ಉದಾಹರಣೆಯಲ್ಲಿ ವಿವರಿಸಲಾಗಿದೆ:

FILE1 = $ 1 wc $ FILE1

ಓದಲು, ಮೊದಲ ವಿವರಣೆಯ ($ 1) ಮೌಲ್ಯಕ್ಕೆ ಒಂದು ವಿವರಣಾತ್ಮಕ ಹೆಸರಿನ ವೇರಿಯೇಬಲ್ ನಿಗದಿಪಡಿಸಿ, ನಂತರ ಈ ವೇರಿಯೇಬಲ್ ($ FILE1) ನಲ್ಲಿ ಪದ ಎಣಿಕೆ ಉಪಯುಕ್ತತೆಯನ್ನು ( wc ) ಎಂದು ಕರೆ ಮಾಡಿ.

ನೀವು ವೇರಿಯಬಲ್ ಸಂಖ್ಯೆಯ ವಾದಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ನೀವು ಎಲ್ಲಾ ಇನ್ಪುಟ್ ಪ್ಯಾರಾಮೀಟರ್ಗಳ ಶ್ರೇಣಿಯನ್ನು ಹೊಂದಿರುವ "$ @" ವೇರಿಯಬಲ್ ಅನ್ನು ಬಳಸಬಹುದು. ಈ ಕೆಳಗಿನ ಉದಾಹರಣೆಯಲ್ಲಿ ವಿವರಿಸಿದಂತೆ, ಪ್ರತೀ -ಲೂಪ್ ಅನ್ನು ಪ್ರತೀ ಒಂದು ಪ್ರಕ್ರಿಯೆಗೆ ನೀವು ಬಳಸಿಕೊಳ್ಳಬಹುದು:

"$ @" ನಲ್ಲಿ FILE1 ಗಾಗಿ wc $ FILE1 ಮಾಡಲಾಗುತ್ತದೆ

ಆಜ್ಞಾ ಸಾಲಿನಿಂದ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳೊಂದಿಗೆ ಈ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಹೇಗೆ ಕರೆಯುವುದು ಎಂಬುದರ ಒಂದು ಉದಾಹರಣೆ ಇಲ್ಲಿದೆ:

ಷಾ ಅಂಕಿಅಂಶಗಳು. sh songlist1 songlist2 songlist3

ಒಂದು ಆರ್ಗ್ಯುಮೆಂಟ್ ಸ್ಥಳಾವಕಾಶಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ನೀವು ಅದನ್ನು ಏಕ ಉಲ್ಲೇಖಗಳೊಂದಿಗೆ ಜೋಡಿಸಬೇಕಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ:

sh stats.sh 'songlist 1' 'ಹಾಡುಪಟ್ಟಿ 2' 'ಹಾಡುಪಟ್ಟಿ 3'

ಧ್ವಜಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಯಾವುದೇ ಕ್ರಮದಲ್ಲಿ ಬಳಕೆದಾರನು ವಾದಗಳಲ್ಲಿ ಹಾದುಹೋಗಲು ಆಗಾಗ್ಗೆ ಸ್ಕ್ರಿಪ್ಟ್ ಬರೆಯಲಾಗುತ್ತದೆ. ಧ್ವಜಗಳ ವಿಧಾನದೊಂದಿಗೆ, ನೀವು ಕೆಲವು ವಾದಗಳನ್ನು ಐಚ್ಛಿಕಗೊಳಿಸಬಹುದು.

"ಬಳಕೆದಾರಹೆಸರು", "ದಿನಾಂಕ" ಮತ್ತು "ಉತ್ಪನ್ನ" ನಂತಹ ನಿಗದಿತ ನಿಯತಾಂಕಗಳನ್ನು ಆಧರಿಸಿ ಡೇಟಾಬೇಸ್ನಿಂದ ಮಾಹಿತಿಯನ್ನು ಪಡೆಯುವ ಒಂದು ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ನೀವು ಹೊಂದಿರುವಿರಿ ಮತ್ತು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ "ಫಾರ್ಮ್ಯಾಟ್" ನಲ್ಲಿ ಒಂದು ವರದಿಯನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ ಎಂದು ತಿಳಿಸಿ. ಈಗ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಬರೆಯುವಾಗ ನೀವು ಈ ಪ್ಯಾರಾಮೀಟರ್ಗಳಲ್ಲಿ ರವಾನಿಸಲು ನಿಮ್ಮ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಬರೆಯಲು ಬಯಸುತ್ತೀರಿ. ಇದು ಹೀಗಿರಬಹುದು:

makereport -u jsmith -p ನೋಟ್ಬುಕ್ಗಳು- 10-20-2011 -f ಪಿಡಿಎಫ್

ಬ್ಯಾಷ್ ಈ ಕಾರ್ಯವನ್ನು "getopts" ಕ್ರಿಯೆಯೊಂದಿಗೆ ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ. ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿ, ನೀವು ಈ ಕೆಳಗಿನಂತೆ getopts ಅನ್ನು ಬಳಸಬಹುದು:

ಸಂದರ್ಭದಲ್ಲಿ "getopts" ಕಾರ್ಯವನ್ನು ಮತ್ತು "ಆಪ್ಟ್ಸ್ಟ್ರಿಂಗ್" ಎಂದು ಕರೆಯಲಾಗುವ ಒಂದು ಸಂದರ್ಭದಲ್ಲಿ-ಲೂಪ್ , ಈ ಸಂದರ್ಭದಲ್ಲಿ "u: d: p: f:", ವಾದಗಳ ಮೂಲಕ ಪುನರಾವರ್ತಿಸಲು. ಆಪ್-ಲೂಪ್ ಆಪ್ಟ್ಸ್ಟ್ರಿಂಗ್ ಮೂಲಕ ನಡೆಯುತ್ತದೆ, ಅದು ವಾದಗಳನ್ನು ರವಾನಿಸಲು ಬಳಸಬಹುದಾದ ಧ್ವಜಗಳನ್ನು ಹೊಂದಿರುತ್ತದೆ, ಮತ್ತು ಆ ಫ್ಲ್ಯಾಗ್ಗಾಗಿ ವೇರಿಯಬಲ್ "ಆಪ್ಷನ್" ಗೆ ಒದಗಿಸಲಾದ ಆರ್ಗ್ಯುಮೆಂಟ್ ಮೌಲ್ಯವನ್ನು ನಿಯೋಜಿಸುತ್ತದೆ. ಕೇಸ್-ಸ್ಟೇಟ್ಮೆಂಟ್ ನಂತರ ವೇರಿಯಬಲ್ "ಆಪ್ಷನ್" ನ ಮೌಲ್ಯವನ್ನು ಜಾಗತಿಕ ವೇರಿಯಬಲ್ಗೆ ನಿಗದಿಪಡಿಸುತ್ತದೆ, ಇದು ಎಲ್ಲಾ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳನ್ನು ಓದಿದ ನಂತರ ಬಳಸಬಹುದಾಗಿದೆ.

ಆಪ್ಟ್ಸ್ಟ್ರಿಂಗ್ನಲ್ಲಿರುವ ಕೋಲನ್ಗಳು ಅನುಗುಣವಾದ ಧ್ವಜಗಳಿಗೆ ಮೌಲ್ಯಗಳು ಅಗತ್ಯವೆಂದು ಅರ್ಥ. ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿ ಎಲ್ಲಾ ಫ್ಲ್ಯಾಗ್ಗಳನ್ನು ಕೊಲೊನ್ ಅನುಸರಿಸಲಾಗುತ್ತದೆ: "u: d: p: f:". ಅಂದರೆ, ಎಲ್ಲಾ ಧ್ವಜಗಳಿಗೆ ಮೌಲ್ಯ ಬೇಕು. ಉದಾಹರಣೆಗೆ, "d" ಮತ್ತು "f" ಫ್ಲ್ಯಾಗ್ಗಳು ಮೌಲ್ಯವನ್ನು ಹೊಂದಿರಬಹುದೆಂದು ನಿರೀಕ್ಷಿಸದಿದ್ದರೆ, ಆಪ್ಟ್ಸ್ಟ್ರಿಂಗ್ "u: dp: f" ಆಗಿರುತ್ತದೆ.

ಆಪ್ಟ್ಸ್ಟ್ರಿಂಗ್ ಪ್ರಾರಂಭದಲ್ಲಿ ಕೊಲೊನ್, ಉದಾಹರಣೆಗೆ: ": u: d: p: f:", ಸಂಪೂರ್ಣವಾಗಿ ಬೇರೆ ಅರ್ಥವನ್ನು ಹೊಂದಿದೆ. ಆಪ್ಟ್ಸ್ಟ್ರಿಂಗ್ನಲ್ಲಿ ಪ್ರತಿನಿಧಿಸದ ಧ್ವಜಗಳನ್ನು ನಿಭಾಯಿಸಲು ಇದು ನಿಮ್ಮನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಆ ಸಂದರ್ಭದಲ್ಲಿ "ಆಯ್ಕೆಯನ್ನು" ವೇರಿಯಬಲ್ನ ಮೌಲ್ಯವು "?" ಮತ್ತು "OPTARG" ನ ಮೌಲ್ಯವನ್ನು ಅನಿರೀಕ್ಷಿತ ಧ್ವಜಕ್ಕೆ ಹೊಂದಿಸಲಾಗಿದೆ. ತಪ್ಪಾದ ಬಳಕೆದಾರರಿಗೆ ಸೂಕ್ತವಾದ ದೋಷ ಸಂದೇಶವನ್ನು ಪ್ರದರ್ಶಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ಧ್ವಜವು ಮುಂಚಿತವಾಗಿರದ ವಾದಗಳನ್ನು getopts ನಿಂದ ನಿರ್ಲಕ್ಷಿಸಲಾಗುತ್ತದೆ. ಸ್ಕ್ರಿಪ್ಟ್ ಕರೆಯುವಾಗ optstring ನಲ್ಲಿ ಸೂಚಿಸಲಾದ ಫ್ಲ್ಯಾಗ್ಗಳನ್ನು ಒದಗಿಸದಿದ್ದರೆ, ನಿಮ್ಮ ಕೋಡ್ನಲ್ಲಿ ನೀವು ಈ ಸಂದರ್ಭದಲ್ಲಿ ವಿಶೇಷವಾಗಿ ನಿರ್ವಹಿಸದಿದ್ದರೆ ಏನಾಗುವುದಿಲ್ಲ. Getops ನಿಂದ ನಿರ್ವಹಿಸಲ್ಪಡದ ಯಾವುದೇ ವಾದಗಳನ್ನು ಇನ್ನೂ ಸಾಮಾನ್ಯ $ 1, $ 2, ಇತ್ಯಾದಿಗಳಿಂದ ವಶಪಡಿಸಿಕೊಳ್ಳಬಹುದು.