பாஷ் 'வைல்' லூப்: பயிற்சி மற்றும் எடுத்துக்காட்டுகள்

பாஷ் ஸ்கிரிப்டிங்கில் 'while' லூப்பைப் பயன்படுத்தி கட்டளை(கள்) மீது மீண்டும் மீண்டும் செய்யவும்.

பாஷ் (போர்ன் அகெய்ன் ஷெல்) என்பது குனு/லினக்ஸ் இயக்க முறைமைகளில் ஷெல் கட்டளை வரியில் மற்றும் ஸ்கிரிப்டிங் மொழியாகும். இது பெரும்பாலான லினக்ஸ் விநியோகங்களுக்கான இயல்புநிலை ஷெல் ஆகும்.

பெரும்பாலான ஸ்கிரிப்டிங் மொழிகளைப் போலவே, பாஷ் இதேபோன்ற பணியை பலமுறை மீண்டும் செய்ய லூப் தொடரியல்களை வழங்குகிறது. இந்த கட்டுரையில் எவ்வாறு பயன்படுத்துவது என்பதை நாம் கற்றுக்கொள்வோம் போது பாஷில் வளையம்.

அறிமுகம்

தி போது மற்றொரு கட்டளை(கள்) (நிபந்தனை கட்டளைகள்) வெளியீட்டின் அடிப்படையில் கட்டளை(கள்) (செயல்படுத்தப்பட்ட கட்டளைகள்) பலமுறை இயக்க பாஷில் உள்ள லூப் பயன்படுத்தப்படுகிறது. நிபந்தனை கட்டளை வெற்றிகரமாக இயங்கும் வரை செயல்படுத்தப்பட்ட கட்டளைகள் தொடர்ந்து இயங்கும் (அதாவது, 0 நிலையை வழங்கும். Linux இல் உள்ள எந்த கட்டளையும் வெற்றிக்கு 0 ஐயும் தோல்விக்கு பூஜ்ஜியமற்ற முழு எண்ணையும் வழங்கும்).

பல நிபந்தனை கட்டளைகள் இருந்தால், பட்டியலில் உள்ள கடைசி கட்டளையின் நிலையை மட்டுமே அறிக்கை கருதுகிறது, அதாவது, பட்டியலில் உள்ள கடைசி கட்டளை வெற்றிகரமாக இயங்கும் வரை லூப் இயங்கும்.

பொது தொடரியல்

க்கான பொதுவான தொடரியல் போது பாஷில் உள்ள லூப்:

செய்யும் போது

நிபந்தனை கட்டளை பட்டியலில் உள்ள கடைசி கட்டளை வெற்றிகரமாக இயங்கும் மற்றும் நிலை 0 உடன் வெளியேறும் வரை execute கட்டளை பட்டியல் தொடர்ந்து இயங்கும். மறு செய்கையில், கடைசி நிபந்தனை கட்டளை தோல்வியுற்றால், லூப் வெளியேறும்.

பயனர் கட்டளை பட்டியல்களில் எந்த இயங்கக்கூடிய கோப்பையும் குறிப்பிடலாம். இது நிலையான லினக்ஸ் நிரல்கள் அல்லது தனிப்பயன் பயனர் நிரல்கள் அல்லது ஸ்கிரிப்ட்களாக இருக்கலாம். ஒவ்வொரு கட்டளையும் ஒரு புதிய வரியில் இருக்க வேண்டும் அல்லது அதே வரியில் அரைப்புள்ளியால் பிரிக்கப்பட வேண்டும்.

சில உதாரணங்களைப் பார்ப்போம்.

ஒரு மாறி ஒரு குறிப்பிட்ட மதிப்பைக் கொண்டிருக்கும் வரை லூப்பிங்: பின்வரும் லூப் மாறியின் மதிப்பு வரை இயங்கும் எக்ஸ் 10 க்கு சமமாக இல்லை.

x=0 போது [[ $x -ne 10 ]] எக்கோ $x ((x++)) செய்து

ஒவ்வொரு மறு செய்கையிலும், x இன் மதிப்பு 10 ஆக உள்ளதா என்பதைச் சரிபார்க்கிறோம். மதிப்பைப் பயன்படுத்தி சரிபார்க்கப்படுகிறது சோதனை கட்டளை. [[ வெளிப்பாடு ]] சோதனை கட்டளைக்கான தொடரியல் (பார்க்க மனிதன் சோதனை) இங்கே நாம் பயன்படுத்துவதால் -நே ஆபரேட்டர் (இது 'சமமாக இல்லை' என்பதைக் குறிக்கிறது), சோதனைக் கட்டளை 0 ஐ வழங்குகிறது, அதாவது வெற்றி, x இன் மதிப்பு 10 இல்லை என்றால், அது பூஜ்ஜியமற்ற மதிப்பை வழங்குகிறது, அதாவது, x இன் மதிப்பு 10 ஆக இருந்தால் தோல்வி.

பின்னர் உள்ளே செய்...முடிந்தது தொகுதி, நாம் x இன் மதிப்பை அச்சிட்டு அதை அதிகரிக்கிறோம். x இன் மதிப்பு 10 ஆனதும், சோதனைக் கட்டளை பூஜ்ஜியமற்ற நிலையைத் தருகிறது, மேலும் லூப் வெளியேறும்.

குறிப்பு: while loop இல் பயன்படுத்தப்படும் index variable ஆனது while loop க்கு முன் அல்லது நிபந்தனை கட்டளைகளில், for loop க்கு மாறாக துவக்கப்பட வேண்டும், இது ஒரு மாறியை மறைமுகமாக துவக்க உதவுகிறது.

பல நிபந்தனை கட்டளைகளுடன்: பின்வரும் லூப் பெயரிடப்பட்ட 5 கோப்பகங்களை உருவாக்குகிறது dir0, dir1, ... dir4.

z=0 "கோப்புகளின் பட்டியல்:" ls -l [[ $z -ne 5 ]] எதிரொலி செய்யும்போது "dir$z உருவாக்குகிறது..." mkdir dir$z ((z++)) முடிந்தது

முதல் கட்டளைகள் எதிரொலி "கோப்புகளின் பட்டியல்:" மற்றும் ls -l ஒருமுறை முழுமையாக நிறைவேற்றும்; லூப் எவ்வளவு காலம் இயங்கும் என்பதில் அவர்களின் வெற்றி அல்லது தோல்வி எந்த தாக்கத்தையும் ஏற்படுத்தாது.

பின்னர் z மாறியின் மதிப்பைச் சரிபார்ப்பதற்கான சோதனைக் கட்டளை இயக்கப்படும். z இன் மதிப்பு 5 ஆகாத வரை, சோதனைக் கட்டளை வெற்றி நிலையைத் தரும், எனவே லூப் தொடர்ந்து இயங்கும். நிபந்தனை கட்டளைகள் மற்றும் செயல்படுத்தப்பட்ட கட்டளைகள் வரிசையில் இயங்கும். இங்கே, ஒவ்வொரு மறு செய்கைக்கும், அது முதலில் echo கட்டளை மற்றும் ls கட்டளையை நிலையில் இயக்கும், பின்னர் 3வது நிபந்தனை கட்டளை z இன் மதிப்பைச் சரிபார்க்கும். அது 5 இல்லை என்றால், அது வளையத்திற்குள் நுழைந்து கொடுக்கப்பட்ட கட்டளைகளை செயல்படுத்துகிறது.

உடைத்து தொடரவும்

நிபந்தனை வெளியேற்றத்திற்கான பிரேக் ஸ்டேட்மெண்ட்

நிபந்தனை அறிக்கையையும் பயன்படுத்தலாம் என்றால் வளைய உள்ளே. தி என்றால் அறிக்கையை a உடன் பயன்படுத்தலாம் உடைக்க லூப்பில் இருந்து நிபந்தனையுடன் வெளியேறுவதற்கான அறிக்கை.

x=0 போது [[ $x -ne 10 ]] [[ $x -eq 5 ]] ஃபை எக்கோ $x ((x++)) முடிந்தால்

மேலே உள்ள while லூப் 0 முதல் 4 வரையிலான எண்களை அச்சிடும். பிறகு i இன் மதிப்பு 5 ஆக இருக்கும் போது, ​​அது லூப்பில் இருந்து வெளியேறும். ஒரு கட்டளை ஒரு குறிப்பிட்ட வெளியீட்டைக் கொடுக்கும்போது ஒரு லூப் வெளியேறும் போது இது குறிப்பாகப் பயன்படுகிறது.

நிபந்தனையுடன் மறு செய்கையைத் தவிர்க்க அறிக்கையைத் தொடரவும்

பாஷிலும் ஏ தொடரவும் அறிக்கை, ஒரு குறிப்பிட்ட நிபந்தனை திருப்தி அடைந்தால், ஒரு சுழற்சியில் மறு செய்கையின் மீதமுள்ள பகுதியைத் தவிர்ப்பது.

x=0 போது [[ $x -ne 10 ]] [[ $x -eq 5 ]] தொடர்ந்தால் fi எதிரொலி $x ((x++)) முடிந்தது

மேலே உள்ள லூப் 5 ஐத் தவிர, 0 முதல் 10 வரையிலான எண்களை அச்சிடும், ஏனெனில் மறு செய்கையின் போது x=5 ஒரு தொடர் அறிக்கை உள்ளது, இது லூப்பில் மீதமுள்ள குறியீட்டை மறு செய்கையுடன் தொடக்கத்தில் தவிர்க்கும் x=6.

சுழல்களைப் பயன்படுத்துதல்: ஸ்கிரிப்டுகள் மற்றும் கட்டளை வரி

லூப் தொடரியல் பாஷ் ஷெல்லில் நேரடியாகவோ அல்லது இயங்கக்கூடிய ஷெல் ஸ்கிரிப்ட் கோப்பிலிருந்தோ பயன்படுத்தப்படலாம். ஒத்த க்கான மற்றும் போது சுழல்கள், ஒரு முறை போது லூப் தொடரியல் ஷெல்லில் உள்ளிடப்பட்டுள்ளது, லூப் செய்யப்பட வேண்டிய கட்டளைகளை பயனர் தொடர அனுமதிக்க ஷெல் தொடர்ந்து கேட்கும்.

அல்லது பயனர் இதை ஸ்கிரிப்ட் கோப்பில் சேமித்து ஸ்கிரிப்ட் கோப்பை இயக்கலாம்.

தி #!/பின்/பாஷ் தொடக்கத்தில் கோப்பு செயல்படுத்தப்படும் போது பயன்படுத்தப்படும் மொழிபெயர்ப்பாளரைக் குறிப்பிடுகிறது. பாஷ் என்பது இப்போதெல்லாம் பொதுவாகப் பயன்படுத்தப்படும் ஷெல் என்றாலும், சில பயனர்கள் ஷெல்களை விரும்புகிறார்கள் zsh, இந்தக் கோப்பின் தொடக்கத்தில் பாஷுக்குப் பதிலாக இது குறிப்பிடப்பட வேண்டும்.

இயக்க அனுமதிகளை வழங்க இந்த கோப்பிற்கு, இயக்கவும்:

chmod +x test.sh

இறுதியாக, கோப்பை இயக்க, ஓடு:

./test.sh

முடிவுரை

தி போது வளைய, ஒத்த க்கான மற்றும் வரை பாஷ் ஸ்கிரிப்டிங்கில் லூப்கள் ஒரு முக்கிய அம்சமாகும். ஒரு குறிப்பிட்ட நிரல் வெற்றிபெறும்போது மாற்று கட்டளைகள்/நிரல்களை இயக்குவதற்குப் பயன்படுத்தப்படுவதைத் தவிர, வரை லூப்பைப் போலவே லூப் பயன்படுத்தப்படுகிறது. இது பெரும்பாலும் மேம்பட்ட நெட்வொர்க்கிங் ஸ்கிரிப்டுகள், கணினி பராமரிப்பு ஸ்கிரிப்டுகள் போன்றவற்றில் அதன் பயனைக் காண்கிறது.