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

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

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

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

அறிமுகம்

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

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

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

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

முடியும் வரை

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

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

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

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

x=0 வரை [[ $x -eq 10 ]] செய்ய எக்கோ $x ((x++)) முடியும்

ஒவ்வொரு மறு செய்கையிலும், x இன் மதிப்பு 10 ஆக உள்ளதா என்பதைச் சரிபார்க்கிறோம். மதிப்பைப் பயன்படுத்தி சரிபார்க்கப்படுகிறது சோதனை கட்டளை. [[ வெளிப்பாடு ]] சோதனை கட்டளைக்கான தொடரியல் (பார்க்க மனிதன் சோதனை).

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

குறிப்பு: ‘வரை’ லூப்பில் பயன்படுத்தப்படும் இண்டெக்ஸ் மாறியானது ‘அன்டில்’ லூப்பிற்கு முன் அல்லது கண்டிஷன் கட்டளைகளில், லூப்பிற்கு மாறாக, ஒரு மாறியை மறைமுகமாக துவக்க உதவுகிறது.

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

z=0 வரை "ஹாய்" எக்கோ "பை" [[ $z -eq 5 ]] எக்கோ "உருவாக்கும் dir$z..." mkdir dir$z ((z++)) முடிந்தது

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

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

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

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

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

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

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

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

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

x=0 வரை [[ $x -eq 10 ]] செய்ய [[ $x -eq 5 ]] தொடர்ந்தால் fi எதிரொலி $x ((x++)) முடிந்தது

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

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

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

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

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

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

chmod +x test.sh

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

./test.sh

முடிவுரை

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