ਕਮਾਂਡਾਂ, ਸੰਟੈਕਸ ਅਤੇ ਉਦਾਹਰਨਾਂ
ਤੁਸੀਂ ਇੱਕ bash ਸਕਰਿਪਟ ਲਿਖ ਸਕਦੇ ਹੋ ਜਿਵੇਂ ਕਿ ਇਹ ਆਰਗੂਮਿੰਟ ਪ੍ਰਾਪਤ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਸਪੀਡ ਕਮਾਂਡ ਲਾਈਨ ਤੋਂ ਕਿਹਾ ਜਾਂਦਾ ਹੈ. ਇਹ ਢੰਗ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਇੱਕ ਸਕ੍ਰਿਪਟ ਨੂੰ ਇੰਪੁੱਟ ਪੈਰਾਮੀਟਰ (ਆਰਗੂਮਿੰਟ) ਦੇ ਮੁੱਲਾਂ ਦੇ ਆਧਾਰ ਤੇ ਥੋੜਾ ਵੱਖਰਾ ਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ.
ਉਦਾਹਰਣ ਵਜੋਂ, ਤੁਹਾਡੇ ਕੋਲ "stats.sh" ਨਾਂ ਦੀ ਇੱਕ ਸਕ੍ਰਿਪਟ ਹੈ ਜੋ ਇੱਕ ਫਾਈਲ ਤੇ ਇੱਕ ਵਿਸ਼ੇਸ਼ ਓਪਰੇਸ਼ਨ ਕਰਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਉਸਦੇ ਸ਼ਬਦ ਗਿਣਨੇ. ਜੇ ਤੁਸੀਂ ਬਹੁਤ ਸਾਰੀਆਂ ਫਾਈਲਾਂ ਤੇ ਸਕਰਿਪਟ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੇ ਯੋਗ ਹੋਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਫਾਈਲ ਨਾਮ ਨੂੰ ਆਰਗੂਮੈਂਟ ਦੇ ਤੌਰ ਤੇ ਪਾਸ ਕਰਨਾ ਸਭ ਤੋਂ ਵਧੀਆ ਹੈ, ਤਾਂ ਜੋ ਤੁਸੀਂ ਆਪਣੀਆਂ ਸਾਰੀਆਂ ਫਾਈਲਾਂ ਤੇ ਕਾਰਵਾਈ ਕਰਨ ਲਈ ਇੱਕੋ ਸਕਰਿਪਟ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕੋ. ਉਦਾਹਰਣ ਦੇ ਲਈ, ਜੇ ਫਾਇਲ ਦੀ ਪ੍ਰਕਿਰਿਆ ਹੋਣੀ ਹੈ ਤਾਂ "songlist" ਹੈ, ਤੁਸੀਂ ਹੇਠਲੀ ਕਮਾਂਡ ਲਾਈਨ ਦਰਜ ਕਰੋਗੇ:
sh stats.sh songlist$ 1, $ 2, $ 3, ਆਦਿ ਦੇ ਮੁੱਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਕਰਿਪਟ ਦੇ ਅੰਦਰ ਆਰਗੂਮਿੰਟ ਪਹੁੰਚ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਜਿੱਥੇ $ 1 ਪਹਿਲੇ ਆਰਗੂਮੈਂਟ, ਦੂਜੀ ਆਰਗੂਮਿੰਟ ਲਈ $ 2 ਅਤੇ ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਹੋਰ ਹਨ. ਇਹ ਹੇਠ ਲਿਖੇ ਉਦਾਹਰਣ ਵਿੱਚ ਦਰਸਾਇਆ ਗਿਆ ਹੈ:
FILE1 = $ 1 wc $ FILE1ਪੜ੍ਹਨਯੋਗਤਾ ਲਈ, ਪਹਿਲੀ ਅਸੂਲ ($ 1) ਦੇ ਮੁੱਲ ਨੂੰ ਵਿਆਖਿਆਤਮਿਕ ਨਾਮ ਦੇ ਨਾਲ ਇੱਕ ਵੇਰੀਏਬਲ ਨਿਰਧਾਰਤ ਕਰੋ, ਅਤੇ ਫੇਰ ਇਸ ਵੇਰੀਏਬਲ ($ FILE1) ਤੇ ਸ਼ਬਦ ਦੀ ਗਿਣਤੀ ਉਪਯੋਗਤਾ ( wc ) ਨੂੰ ਕਾਲ ਕਰੋ.
ਜੇ ਤੁਹਾਡੇ ਕੋਲ ਆਰਗੂਮਿੰਟ ਦੀ ਇੱਕ ਵੁਰਚੁਅਲ ਗਿਣਤੀ ਹੈ, ਤਾਂ ਤੁਸੀਂ "$ @" ਵੇਰੀਏਬਲ ਇਸਤੇਮਾਲ ਕਰ ਸਕਦੇ ਹੋ, ਜੋ ਸਾਰੇ ਇਨਪੁਟ ਪੈਰਾਮੀਟਰਾਂ ਦਾ ਇਕ ਐਰੇ ਹੈ ਇਸ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਤੁਸੀਂ ਇੱਕ -ਲਈ-ਲੂਪ ਦੀ ਵਰਤੋਂ ਹਰ ਇਕ ਨੂੰ ਪ੍ਰਭਾਵੀ ਢੰਗ ਨਾਲ ਪ੍ਰੋਸੈਸ ਕਰਨ ਲਈ ਕਰ ਸਕਦੇ ਹੋ, ਜਿਵੇਂ ਕਿ ਅੱਗੇ ਦਿੱਤੇ ਉਦਾਹਰਣ ਵਿੱਚ ਦਰਸਾਇਆ ਗਿਆ ਹੈ:
FILE1 ਲਈ "$ @" ਕਰੋ wc $ FILE1 doneਇੱਥੇ ਇਸ ਸਕਰਿਪਟ ਨੂੰ ਕਿਵੇਂ ਕਮਾਂਡ ਲਾਈਨ ਤੋਂ ਆਰਗੂਮੈਂਟ ਨਾਲ ਕਾਲ ਕਰਨਾ ਹੈ:
sh stats.sh songlist1 songlist2 songlist3ਜੇਕਰ ਕਿਸੇ ਆਰਗੂਮੈਂਟ ਦੀਆਂ ਖਾਲੀ ਥਾਵਾਂ ਹਨ, ਤਾਂ ਤੁਹਾਨੂੰ ਇਸ ਨੂੰ ਸਿੰਗਲ ਕੋਟਸ ਦੇ ਨਾਲ ਜੋੜਨਾ ਚਾਹੀਦਾ ਹੈ. ਉਦਾਹਰਣ ਲਈ:
sh stats.sh 'ਗੀਤਲੀਲ 1' 'ਗੀਤ-ਸੂਚੀ 2' 'ਗੀਤਲਿਸਟ 3'ਅਕਸਰ ਇੱਕ ਸਕਰਿਪਟ ਲਿਖਿਆ ਜਾਂਦਾ ਹੈ ਕਿ ਯੂਜ਼ਰ ਝੰਡੇ ਨੂੰ ਵਰਤ ਕੇ ਕਿਸੇ ਵੀ ਆਦੇਸ਼ ਵਿੱਚ ਆਰਗੂਮਿੰਟ ਵਿੱਚ ਪਾਸ ਕਰ ਸਕਦਾ ਹੈ. ਝੰਡੇ ਵਿਧੀ ਨਾਲ, ਤੁਸੀਂ ਕੁਝ ਆਰਗੂਮੈਂਟਾਂ ਨੂੰ ਵਿਕਲਪਿਕ ਬਣਾ ਸਕਦੇ ਹੋ.
ਮੰਨ ਲਓ ਕਿ ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਸਕ੍ਰਿਪਟ ਹੈ, ਜੋ ਕਿ "ਯੂਜ਼ਰਨੇਮ", "ਮਿਤੀ" ਅਤੇ "ਉਤਪਾਦ", ਅਤੇ ਇੱਕ ਖਾਸ "ਫਾਰਮੈਟ" ਵਿੱਚ ਇੱਕ ਰਿਪੋਰਟ ਤਿਆਰ ਕਰਨ ਦੇ ਅਧਾਰ ਤੇ ਇੱਕ ਡਾਟਾਬੇਸ ਤੋਂ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਦੀ ਹੈ. ਹੁਣ ਤੁਸੀਂ ਆਪਣੀ ਸਕ੍ਰਿਪਟ ਲਿਖਣਾ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਕਿ ਸਕਰਿਪਟ ਨੂੰ ਕਾਲ ਕੀਤੀ ਜਾਵੇ ਤਾਂ ਤੁਸੀਂ ਇਹਨਾਂ ਪੈਰਾਮੀਟਰਾਂ ਵਿੱਚ ਪਾਸ ਕਰ ਸਕੋ. ਇਹ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦੇ ਸਕਦਾ ਹੈ:
makereport -u jsmith -p ਨੋਟਬੁੱਕ- d 10-20-2011 -f pdfBash ਇਸ ਕਾਰਜਸ਼ੀਲਤਾ ਨੂੰ "ਡਿਉਪਟਸ" ਫੰਕਸ਼ਨ ਨਾਲ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ. ਉਪਰੋਕਤ ਉਦਾਹਰਨ ਲਈ, ਤੁਸੀਂ ਹੇਠ ਲਿਖੇ ਢੰਗਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ:
ਇਹ ਇੱਕ ਅਜਿਹਾ -ਲੂਪ ਹੁੰਦਾ ਹੈ ਜੋ "getopts" ਫੰਕਸ਼ਨ ਅਤੇ ਇੱਕ "ਓਪਸਟ੍ਰਿੰਗਿੰਗ" ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਇਸ ਕੇਸ ਵਿੱਚ "u: d: p: f:", ਆਰਗੂਮਿੰਟ ਦੁਆਰਾ ਦੁਹਰਾਉਣ ਲਈ. ਜਦੋਂ-ਲੂਪ ਔਪਸਟ੍ਰਿੰਗ ਦੁਆਰਾ ਚਲਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਝੰਡੇ ਹੁੰਦੇ ਹਨ ਜੋ ਆਰਗੂਮੈਂਟਾਂ ਪਾਸ ਕਰਨ ਲਈ ਵਰਤੇ ਜਾ ਸਕਦੇ ਹਨ, ਅਤੇ ਉਹ ਫਲੈਗ "ਵਿਕਲਪ" ਲਈ ਫਲੈਗ ਦੇ ਦਿੱਤੇ ਮੁੱਲ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰ ਸਕਦੇ ਹਨ. ਕੇਸ-ਸਟੇਟਮੈਂਟ ਫਿਰ ਵੇਰੀਏਬਲ "ਵਿਕਲਪ" ਦੇ ਮੁੱਲ ਨੂੰ ਇੱਕ ਗਲੋਬਲ ਵੈਰੀਏਬਲ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ ਜੋ ਸਾਰੇ ਆਰਗੂਮੈਂਟ ਪੜ੍ਹਨ ਤੋਂ ਬਾਅਦ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ.
Optstring ਵਿੱਚ ਕੋਲਨ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਅਨੁਸਾਰੀ ਝੰਡੇ ਲਈ ਮੁੱਲ ਲੋੜੀਂਦੇ ਹਨ. ਉਪਰੋਕਤ ਉਦਾਹਰਨ ਵਿੱਚ ਸਾਰੇ ਝੰਡੇ ਇਕ ਕੋਲਨ ਦੁਆਰਾ ਪਾਲਣ ਕੀਤੇ ਜਾਂਦੇ ਹਨ: "u: d: p: f:". ਇਸਦਾ ਅਰਥ ਹੈ, ਸਾਰੇ ਝੰਡੇ ਨੂੰ ਇੱਕ ਮੁੱਲ ਦੀ ਲੋੜ ਹੈ ਜੇ, ਉਦਾਹਰਨ ਲਈ, "d" ਅਤੇ "f" ਫਲੈਗਾਂ ਦੀ ਕੀਮਤ ਨਹੀਂ ਹੋਣੀ ਚਾਹੀਦੀ, ਤਾਂ ਚੋਣਕਾਰ "u: dp: f" ਹੋਵੇਗਾ.
Optstring ਦੀ ਸ਼ੁਰੂਆਤ ਤੇ ਇੱਕ ਕੌਲਨ, ਉਦਾਹਰਨ ਲਈ ": u: d: p: f:", ਦਾ ਪੂਰੀ ਤਰ੍ਹਾਂ ਵੱਖਰਾ ਅਰਥ ਹੈ. ਇਹ ਤੁਹਾਨੂੰ ਫਲੈਗ ਹੈਂਡਲ ਕਰਨ ਲਈ ਸਹਾਇਕ ਹੈ, ਜੋ ਕਿ ਔਪਸਟ੍ਰਿੰਗ ਵਿੱਚ ਪ੍ਰਸਤੁਤ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ. ਉਸ ਸਥਿਤੀ ਵਿੱਚ "ਚੋਣ" ਵੇਰੀਏਬਲ ਦਾ ਮੁੱਲ "?" ਅਤੇ "OPTARG" ਦਾ ਮੁੱਲ ਅਚਾਨਕ ਫਲੈਗ ਤੇ ਸੈਟ ਕੀਤਾ ਗਿਆ ਹੈ ਇਹ ਤੁਹਾਨੂੰ ਗਲਤੀ ਦੇ ਉਪਭੋਗਤਾ ਨੂੰ ਸੂਚਿਤ ਕਰਨ ਲਈ ਇੱਕ ਢੁੱਕਵਾਂ ਗਲਤੀ ਸੁਨੇਹਾ ਵਿਖਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ.
ਆਰਗੂਮਿੰਟ, ਜੋ ਕਿ ਇੱਕ ਝੰਡੇ ਤੋਂ ਪਹਿਲਾਂ ਨਹੀਂ ਹਨ, ਨੂੰ ਗਾਇਪਟਸ ਦੁਆਰਾ ਅਣਡਿੱਠ ਕੀਤਾ ਜਾਂਦਾ ਹੈ. ਜੇਕਰ ਓਪਸਟ੍ਰਿੰਗ ਵਿੱਚ ਨਿਰਦਿਸ਼ਟ ਫਲੈਗ ਪ੍ਰਦਾਨ ਨਹੀਂ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਜਦੋਂ ਸਕ੍ਰਿਪਟ ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਕੁਝ ਨਹੀਂ ਹੁੰਦਾ, ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਆਪਣੇ ਕੇਸ ਵਿੱਚ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਇਸ ਕੇਸ ਨੂੰ ਨਹੀਂ ਸੰਭਾਲਦੇ. Getops ਦੁਆਰਾ ਨਿਰੀਖਣ ਕੀਤੇ ਗਏ ਕੋਈ ਵੀ ਆਰਗੂਮੈਂਟ ਅਜੇ ਵੀ ਨਿਯਮਤ $ 1, $ 2, ਆਦਿ ਦੇ ਨਾਲ ਹਾਸਲ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ.