லினக்ஸில் எளிய ஷெல் ஸ்கிரிப்ட்களை உருவாக்குவது எப்படி
ஷெல் ஸ்கிரிப்ட்களை உருவாக்குவது லினக்ஸ் பயனர்கள் விரல்களின் நுனியில் இருக்க வேண்டிய மிக முக்கியமான திறமைகளில் ஒன்றாகும். மீண்டும் மீண்டும் செய்யக்கூடிய பணிகளை தானியக்கமாக்குவதில் ஷெல் ஸ்கிரிப்ட்கள் மகத்தான பங்கு வகிக்கின்றன, இல்லையெனில் அது வரி மூலம் கடினமானது.
இந்த டுடோரியலில், ஒவ்வொரு லினக்ஸ் பயனரும் கொண்டிருக்க வேண்டிய சில அடிப்படை ஷெல் ஸ்கிரிப்டிங் செயல்பாடுகளை நாங்கள் முன்னிலைப்படுத்துகிறோம்.
1. எளிய ஷெல் ஸ்கிரிப்டை உருவாக்கவும்
ஷெல் ஸ்கிரிப்ட் என்பது ஆஸ்கி உரையை உள்ளடக்கிய ஒரு கோப்பு. எளிய ஷெல் ஸ்கிரிப்டை உருவாக்குவதன் மூலம் தொடங்குவோம், இதைச் செய்ய, உரை திருத்தியைப் பயன்படுத்துவோம். விம் எடிட்டர் நிறைய உள்ளன.
செயல்படுத்தப்படும் போது Hello "ஹலோ வேர்ல்ட்" காண்பிக்கும் எளிய ஸ்கிரிப்டை உருவாக்குவதன் மூலம் தொடங்குவோம்.
$ vim hello.sh
பின்வரும் உள்ளடக்கத்தை கோப்பில் ஒட்டவும் மற்றும் சேமிக்கவும்.
#!/bin/bash # Print Hello world message echo "Hello World!"
வரி மூலம் ஷெல் ஸ்கிரிப்ட் கோட்டிற்கு மேலே செல்லலாம்.
- முதல் வரி -
#!/Bin/bash
- ஷெபாங் தலைப்பு என்று அழைக்கப்படுகிறது. இது ஒரு சிறப்பு கட்டமைப்பாகும், இது ஸ்கிரிப்டை விளக்குவதற்கு எந்த நிரல் பயன்படுத்தப்படும் என்பதைக் குறிக்கிறது. இந்த வழக்கில், இது/பின்/பாஷ் சுட்டிக்காட்டும் பாஷ் ஷெல் ஆகும். பைதான் போன்ற பிற ஸ்கிரிப்டிங் மொழிகள் உள்ளன, அவை#!/Usr/bin/python3
ஆல் குறிக்கப்படுகின்றன மற்றும் பெர்லின் ஷெபாங் தலைப்பு#!/Usr/bin/perl
. - இரண்டாவது வரி ஒரு கருத்து. கருத்து என்பது ஷெல் ஸ்கிரிப்ட் என்ன செய்கிறது மற்றும் ஸ்கிரிப்ட் இயங்கும்போது செயல்படுத்தப்படாது என்பதை விவரிக்கும் ஒரு அறிக்கை. கருத்துகள் எப்போதும்
#
என்ற ஹாஷ் அடையாளத்தால் முன்னதாகவே இருக்கும். - கடைசி வரியானது முனையத்தில் ‘ஹலோ வேர்ல்ட்’ செய்தியை அச்சிடும் கட்டளை.
அடுத்த படி, காட்டப்பட்டுள்ளபடி chmod கட்டளையைப் பயன்படுத்தி இயக்க அனுமதியை வழங்குவதன் மூலம் ஸ்கிரிப்டை இயக்கக்கூடியதாக மாற்ற வேண்டும்.
$ chmod +x hello.sh
இறுதியாக, கட்டளைகளில் ஒன்றைப் பயன்படுத்தி ஷெல் ஸ்கிரிப்டை இயக்கவும்:
$ bash hello.sh OR $ ./hello.sh
2. குறியீட்டை செயல்படுத்த நிபந்தனை அறிக்கைகளைப் பயன்படுத்துதல்
பிற நிரலாக்க மொழிகளைப் போலவே, நிபந்தனை அறிக்கைகளும் பாஷ் ஸ்கிரிப்ட்டில் முடிவுகளை எடுக்கப் பயன்படுத்தப்படுகின்றன, தொடரியல் ஒரு சிறிய மாறுபாடு மட்டுமே. If, if-else, மற்றும் elif நிபந்தனை அறிக்கைகளை நாங்கள் மறைக்கப் போகிறோம்.
ஒற்றை அல்லது பல நிபந்தனைகளை சோதிக்க if அறிக்கை பயன்படுத்தப்படலாம். ஒற்றை நிபந்தனையை சோதிக்க if அறிக்கையின் அடிப்படை பயன்பாட்டுடன் தொடங்குவோம். If அறிக்கை if ... fi
தொகுதிகளால் வரையறுக்கப்படுகிறது.
if command then statement fi
கீழே உள்ள ஷெல் ஸ்கிரிப்டைப் பார்ப்போம்.
#!/bin/bash echo 'Enter the score' read x if [[ $x == 70 ]]; then echo 'Good job!' fi
மேலே உள்ள ஷெல் ஸ்கிரிப்ட் ஒரு மதிப்பெண்ணை வழங்க பயனரைத் தூண்டுகிறது, பின்னர் அது மாறி x இல் சேமிக்கப்படுகிறது. மதிப்பெண் 70 க்கு ஒத்திருந்தால், ஸ்கிரிப்ட் output "நல்ல வேலை!" வெளியீட்டை வழங்குகிறது. ஒப்பீட்டு ஆபரேட்டர் ==
மதிப்பெண் உள்ளிட்டது, மாறி x இல் சேமிக்கப்பட்டுள்ளதா என சோதிக்க பயன்படுத்தப்படுகிறது. 100 க்கு.
நீங்கள் பயன்படுத்தக்கூடிய பிற ஒப்பீட்டு ஆபரேட்டர்கள் பின்வருமாறு:
-
-eq
- க்கு சமம் -
-ne
- க்கு சமமாக இல்லை -
-lt
- க்கும் குறைவாக -
-le
- ஐ விட குறைவாகவோ அல்லது சமமாகவோ -
-lt
- க்கும் குறைவாக -
-ge
- ஐ விட பெரியது அல்லது சமம்
எடுத்துக்காட்டாக, உள்ளீட்டு மதிப்பெண் 50 க்கும் குறைவான மதிப்பாக இருந்தால், கீழே உள்ள if-statement தொகுதி ‘கடினமாக உழைக்க’ அச்சிடுகிறது.
if [[ $x -lt 50 ]]; then echo 'Work Harder!' fi
உங்களிடம் 2 சாத்தியமான விளைவுகளைக் கொண்ட சூழ்நிலைகளுக்கு: - இது அல்லது அதுவாக இருந்தாலும் - if-else அறிக்கை கைக்கு வரும்.
if command then statement1 else statement2 fi
கீழேயுள்ள ஸ்கிரிப்ட் உள்ளீட்டு மதிப்பெண்ணைப் படித்து, அது 70 ஐ விட அதிகமாகவோ அல்லது சமமாகவோ இருக்கிறதா என்று சரிபார்க்கிறது.
மதிப்பெண் 70 ஐ விட அதிகமாகவோ அல்லது சமமாகவோ இருந்தால், உங்களுக்கு ஒரு ‘பெரிய வேலை, நீங்கள் தேர்ச்சி பெற்றீர்கள்!’ செய்தி கிடைக்கும். இருப்பினும், மதிப்பெண் 70 க்கு கீழே இருந்தால், ‘நீங்கள் தோல்வியுற்றீர்கள்’ வெளியீடு அச்சிடப்படும்.
#!/bin/bash echo 'Enter the score' read x if [[ $x -ge 70 ]]; then echo 'Great job, You passed!' else echo 'You failed' fi
பல நிபந்தனைகள் மற்றும் வெவ்வேறு விளைவுகள் உள்ள காட்சிகளில், if-elif-else அறிக்கை பயன்படுத்தப்படுகிறது. இந்த அறிக்கை பின்வரும் வடிவமைப்பை எடுக்கும்.
if condition1 then statement1 elif condition2 then statement2 else statement3 fi
எடுத்துக்காட்டாக, லாட்டரிக்கான ஸ்கிரிப்ட் எங்களிடம் உள்ளது, அது உள்ளிட்ட எண் 90, 60 அல்லது 30 என சரிபார்க்கிறது.
#!/bin/bash echo 'Enter the score' read x if [[ $x -eq 90 ]]; then echo “You have won the First Prize” elif [[ $x -eq 60 ]]; then echo “You have won the Second Prize” elif [[ $x -eq 30 ]]; then echo “You have won the Second Prize” else echo “Please try again” fi
3. மற்றும் லாஜிக் உடன் if அறிக்கையைப் பயன்படுத்துதல்
இரண்டு நிபந்தனைகள் திருப்தி அடைந்தால் ஒரு பணியைச் செய்ய AND லாஜிக் ஆபரேட்டருடன் if அறிக்கையைப் பயன்படுத்தலாம். &&
ஆபரேட்டர் AND தர்க்கத்தைக் குறிக்கப் பயன்படுகிறது.
#!/bin/bash echo 'Please Enter your user_id' read user_id echo 'Please Enter your tag_no' read tag_id if [[ ($user_id == “tecmint” && $tag_id -eq 3990) ]]; then echo “Login successful” else echo “Login failure” fi
5. அல்லது லாஜிக் உடன் if ஸ்டேட்மென்ட்டைப் பயன்படுத்துதல்
OR தர்க்கத்தைப் பயன்படுத்தும் போது, அது ||
சின்னத்தால் குறிக்கப்படுகிறது, எதிர்பார்த்த முடிவுகளைக் கொடுக்க நிபந்தனைகளில் ஒன்று ஸ்கிரிப்ட்டில் திருப்தி அடைய வேண்டும்.
#!/bin/bash echo 'Please enter a random number' read number if [[ (number -eq 55 || number -eq 80) ]]; then echo 'Congratulations! You’ve won' else echo 'Sorry, try again' fi
லூப்பிங் கட்டுமானங்களைப் பயன்படுத்தவும்
ஒரு குறிப்பிட்ட முடிவை அடையும் வரை தொடர்ச்சியான பணிகளைச் செய்ய பயனர்களை பாஷ் சுழல்கள் அனுமதிக்கின்றன. மீண்டும் மீண்டும் செய்யும் பணிகளைச் செய்வதில் இது எளிது. இந்த பிரிவில், பிற நிரலாக்க மொழிகளிலும் நீங்கள் காணக்கூடிய சில சுழல்களைப் பார்ப்போம்.
இது வேலை செய்ய எளிதான சுழல்களில் ஒன்றாகும். தொடரியல் மிகவும் எளிது:
while <some test> do commands done
கீழே உள்ள லூப் செயல்படுத்தப்படும் போது 1 முதல் 10 வரையிலான அனைத்து எண்களையும் பட்டியலிடுகிறது.
#!/bin/bash # A simple while loop counter=1 while [ $counter -le 10 ] do echo $counter ((counter++)) done
நேரம் சுழற்சியைப் பற்றி விவாதிக்கலாம்:
மாறி கவுண்டர் 1 க்கு துவக்கப்படுகிறது. மேலும் மாறி 10 ஐ விட குறைவாகவோ அல்லது சமமாகவோ இருக்கும்போது, நிபந்தனை திருப்தி அடையும் வரை கவுண்டரின் மதிப்பு அதிகரிக்கப்படும். வரி எதிரொலி $கவுண்டர் 1 முதல் 10 வரையிலான அனைத்து எண்களையும் அச்சிடுகிறது.
அதே நேரத்தில் சுழற்சியைப் போலவே, குறியீட்டை மீண்டும் செயல்படுத்த ஒரு ஃபார் லூப் பயன்படுத்தப்படுகிறது. அதாவது. பயனரால் வரையறுக்கப்பட்ட குறியீட்டு செயலாக்கத்தை முடிந்தவரை பல முறை செய்யவும்.
தொடரியல்:
for var in 1 2 3 4 5 N do command1 command2 done
கீழே உள்ள ஃபார் லூப் 1 முதல் 10 வரை மீண்டும் செயல்படுகிறது மற்றும் அவற்றின் மதிப்புகளை திரையில் செயலாக்குகிறது.
இதை அடைய ஒரு சிறந்த வழி, அனைத்து எண்களையும் தட்டச்சு செய்வதற்கு பதிலாக காட்டப்பட்டுள்ளபடி இரட்டை சுருள் பிரேஸ்களைப் பயன்படுத்தி {}
வரம்பை வரையறுப்பது.
#!/bin/bash # Specify range in a for loop for num in {1..10} do echo $num done
பாஷ் நிலை அளவுருக்கள்
ஒரு நிலை அளவுரு என்பது ஒரு சிறப்பு மாறி, இது ஷெல்லில் மதிப்புகள் அனுப்பப்படும்போது ஸ்கிரிப்டில் குறிப்பிடப்படுகிறது, ஆனால் அதை ஒதுக்க முடியாது. நிலை அளவுருக்கள் $0 $1 $2 $3 …… முதல் $9 வரை இயங்கும். Value 9 மதிப்புக்கு அப்பால், அளவுருக்கள் சுருள் அடைப்புக்குறிக்குள் இணைக்கப்பட வேண்டும் எ.கா. & # 36 {10}, & # 36 {11}… மற்றும் பல.
ஸ்கிரிப்டை இயக்கும்போது, position 0 ஆக இருக்கும் முதல் நிலை அளவுரு ஷெல் ஸ்கிரிப்ட்டின் பெயரை எடுக்கும். $1 அளவுரு முனையத்தில் அனுப்பப்படும் முதல் மாறியை எடுக்கும், $2 இரண்டாவது, $3 மூன்றாவது மற்றும் பலவற்றை எடுக்கும்.
காட்டப்பட்டுள்ளபடி ஸ்கிரிப்ட் test.sh ஐ உருவாக்குவோம்.
#!/bin/bash echo "The name of the script is: " $0 echo "My first name is: " $1 echo "My second name is: " $2
அடுத்து, ஸ்கிரிப்டை இயக்கி, முதல் மற்றும் இரண்டாவது பெயரை வாதங்களாக வழங்கவும்:
# bash test.sh James Kiarie
வெளியீட்டில் இருந்து, அச்சிடப்பட்ட முதல் மாறி ஷெல் ஸ்கிரிப்ட்டின் பெயர் என்பதைக் காணலாம், இந்த விஷயத்தில், test.sh. அதன்பிறகு, ஷெல் ஸ்கிரிப்டில் வரையறுக்கப்பட்ட நிலை அளவுருக்களுக்கு ஒத்த பெயர்கள் அச்சிடப்படுகின்றன.
நிலை மாறிகள் பயனுள்ளதாக இருக்கும், அவை மாறிக்கு ஒரு மதிப்பை வெளிப்படையாக ஒதுக்குவதற்கு பதிலாக உள்ளிடப்பட்ட தரவைத் தனிப்பயனாக்க உதவுகின்றன.
ஷெல் கட்டளை வெளியேறும் குறியீடுகள்
வெளியேறும் குறியீடு என்றால் என்ன என்ற எளிய கேள்விக்கு பதிலளிப்பதன் மூலம் ஆரம்பிக்கலாம்.
ஒரு பயனர் அல்லது ஷெல் ஸ்கிரிப்ட் மூலம் ஷெல்லில் செயல்படுத்தப்படும் ஒவ்வொரு கட்டளைக்கும் வெளியேறும் நிலை உள்ளது. வெளியேறும் நிலை ஒரு முழு எண்.
0 இன் வெளியேறும் நிலை கட்டளை எந்த பிழையும் இல்லாமல் வெற்றிகரமாக செயல்படுத்தப்படுவதைக் குறிக்கிறது. 1 முதல் 255 வரை எதையும் கட்டளை தோல்வியுற்றது அல்லது வெற்றிகரமாக செயல்படுத்தவில்லை என்பதைக் காட்டுகிறது.
கட்டளையின் வெளியேறும் நிலையைக் கண்டுபிடிக்க, $? குறியீடு> ஷெல் மாறி பயன்படுத்தவும்.
1 புள்ளிகளின் வெளியேறும் நிலை ஒரு பொதுவான பிழைக்கு அல்லது சூடோ அனுமதியின்றி கோப்புகளைத் திருத்துவது போன்ற அனுமதிக்க முடியாத பிழைகள்.
கட்டளை அல்லது பில்டின் ஷெல் மாறியின் தவறான பயன்பாட்டிற்கு 2 புள்ளிகளின் வெளியேறும் நிலை.
127 வெளியேறும் நிலை சட்டவிரோத கட்டளையை சுட்டிக்காட்டுகிறது, இது வழக்கமாக ‘கட்டளை காணப்படவில்லை’ பிழையை அளிக்கிறது.
ஒரு ஸ்கிரிப்டுக்குள் ஷெல் கட்டளைகளின் செயலாக்க வெளியீடு
பாஷ் ஸ்கிரிப்ட்டில், எதிர்கால பயன்பாட்டிற்காக ஒரு கட்டளையின் வெளியீட்டை ஒரு மாறியில் சேமிக்கலாம். இது ஷெல் கட்டளை மாற்றாகவும் குறிப்பிடப்படுகிறது, மேலும் பின்வரும் வழிகளில் இதை அடையலாம்.
variable=$(command) OR variable=$(/path/to/command) OR variable=$(command argument 1 argument 2 ...)
எடுத்துக்காட்டாக, தேதி கட்டளையை இன்று எனப்படும் மாறியில் சேமித்து, தற்போதைய தேதியை வெளிப்படுத்த ஷெல் ஸ்கிரிப்டை அழைக்கலாம்.
#!/bin/bash today=$(date) echo “Today is $today”
மற்றொரு உதாரணத்தை எடுத்துக் கொள்வோம். உங்கள் லினக்ஸ் கணினியில் செல்லுபடியாகும் உள்நுழைவு பயனர்களைக் கண்டுபிடிக்க விரும்புகிறீர்கள் என்று வைத்துக்கொள்வோம். நீங்கள் அதைப் பற்றி எப்படிப் போவீர்கள்? முதலில், அனைத்து பயனர்களின் பட்டியல் (கணினி, செயல்முறை மற்றும் உள்நுழைவு பயனர்கள்)/etc/passwd கோப்பில் சேமிக்கப்படுகிறது.
கோப்பைக் காண,/bin/bash பண்புக்கூறு உள்ள பயனர்களைத் தேட grep கட்டளையைப் பயன்படுத்த வேண்டும் மற்றும் பெயர்களின் முதல் 10 எழுத்துக்களைக் காண்பிக்க காட்டப்பட்டுள்ளபடி cut -c 1-10 கட்டளையைப் பயன்படுத்த வேண்டும்.
பூனை கட்டளையை login_users மாறிக்கு சேமித்து வைத்திருக்கிறோம்.
#!/bin/bash login_users=$(cat /etc/passwd | grep /bin/bash | cut -c 1-10) echo 'This is the list of login users: echo $login_users
இது எளிய ஷெல் ஸ்கிரிப்ட்களை உருவாக்குவதற்கான எங்கள் டுடோரியலை முடிவுக்குக் கொண்டுவருகிறது. இந்த மதிப்புமிக்கதை நீங்கள் கண்டுபிடித்தீர்கள் என்று நம்புகிறோம்.