பாஷ் கோட்பாடு

/ பின் / பாஷ்

0. குறியீட்டு

  1. பெரும்பாலான மக்களுக்கு நடக்கும் விஷயங்கள்
  2. ஸ்கிரிப்டின் அமைப்பு
  3. திரையில் அச்சிடுக
  4. பயனர் INPUT ஐப் படிக்கவும்
  5. பாஷில் கணக்கீடுகள்
  6. அடிப்படையில்
  7. சுழல்கள்
  8. செயல்பாடுகளை
  9. கெட்டாப்ஸ்

1. பெரும்பாலான மக்களுக்கு நடக்கும் விஷயங்கள்

/ bin / bash அல்லது / bin / sh

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

யூனிகோட் Vs ASCII

உங்கள் ஸ்கிரிப்ட்களில் "¿" அல்லது "ñ" ஐ ஏன் பயன்படுத்த முடியாது என்று நீங்கள் எப்போதாவது யோசித்திருக்கிறீர்களா? அல்லது உச்சரிப்புகளைப் பயன்படுத்தலாமா? ஊடாடும் ஸ்கிரிப்ட்களில் இது மிகவும் எரிச்சலூட்டும். ஏனென்றால், பாஷின் இயல்புநிலை குறியாக்கம் ASCII, அல்லது அதே என்ன, ஆங்கில எழுத்துக்குறி தொகுப்பு. அதை மாற்ற நாம் யூனிகோடைப் பயன்படுத்த விரும்புகிறோம் என்பதை எங்கள் ஸ்கிரிப்ட்டிடம் சொல்ல வேண்டும். அதற்காக நீங்கள் கட்டளை மொழிபெயர்ப்பாளருக்குப் பிறகு ஒரு வரியைச் சேர்க்க வேண்டும்:

# - * - குறியாக்கம்: யுடிஎஃப் -8 - * -

கவனமாக இருங்கள், இந்த வரி ஸ்கிரிப்டின் தொடக்கத்தில் இருப்பது முக்கியம்.

ஸ்கிரிப்டை இயக்கக்கூடியதாக ஆக்குங்கள்

People உடன் எத்தனை பேர் ஸ்கிரிப்ட்களை இயக்குகிறார்கள் என்பது வேடிக்கையானது$ பாஷ் script.sh" அதற்கு பதிலாக "$ ./script.sh'எல்லாவற்றிற்கும் மேலாக, இதைத்தான் நாங்கள் ஒரு ஷெல் வரையறுத்துள்ளோம்.

மரணதண்டனை அனுமதிகளைச் சேர்க்க, நீங்கள் இயக்க வேண்டும்:

sudo + x script.sh
எங்கள் ஸ்கிரிப்ட் இயங்கக்கூடியதாக இருந்தால், அதை எங்கள் PATH இல் சேர்த்து, எங்கள் கணினியில் எங்கிருந்தும் / கோப்புறையிலிருந்து இயக்கக்கூடியதாக மாற்றலாம். அதற்காக நாம் எங்கள் பயனரின் .bashrc அல்லது / etc / bashrc வரியில் சேர்க்க வேண்டும்
BIN = "கோப்பு" PATH = "$ BIN $ PATH"
எல்லா பெரிய எழுத்திலும் மாறி பெயர்களை எழுதுவது ஒரு பாஷ் விதி. பலர் இந்த விதியைப் பின்பற்றுவதில்லை, ஆனால் நீண்ட ஸ்கிரிப்டுகளுக்கு இது மிகவும் பாராட்டத்தக்கது, ஏனென்றால் அவை அவற்றை அதிகம் படிக்கக்கூடியதாக ஆக்குகின்றன

2. ஸ்கிரிப்டின் அமைப்பு

  1. தலைப்பு
  2. உலகளாவிய மாறிகள் வரையறை
  3. உதவி
  4. செயல்பாடுகளை
  5. பிரதான உடல்

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

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

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

செயல்பாட்டு உதவி () {எதிரொலி "" "எங்கள் நன்கு வடிவமைக்கப்பட்ட உதவி உரை." "" வெளியேறினால் [[-z $ 1 || $ 1 == "-ம" || $ 1 == "- உதவி"]]; பின்னர் fi க்கு உதவுங்கள்

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

நிபந்தனை திரையில் காட்சி உதவியைக் குறிக்கிறது மற்றும் ஸ்கிரிப்ட் அளவுருக்கள் இல்லாமல் இயங்கினால் அல்லது -h / –help குறிப்பிடப்பட்டால் வெளியேறவும். நீங்கள் பார்த்தால், பெரும்பாலான லினக்ஸ் நிரல்களின் நிலையான நடத்தை இதுதான்.

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

3. திரையில் அச்சிடுங்கள்

பாஷில் திரையில் அச்சிடுவதற்கு 2 முக்கிய கட்டளைகள் உள்ளன: «எதிரொலி"மேலும்"வைட்டமின்«. அவை இரண்டும் வேகமானவை மற்றும் இரண்டும் பாஷின் ஒரு பகுதியாகும். ஒரு தொடக்கநிலைக்கான முக்கிய வேறுபாடு என்னவென்றால், எதிரொலி இறுதியில் ஒரு புதிய வரியைச் சேர்க்கிறது, அதே நேரத்தில் «வைட்டமின்"இல்லை.

எக்கோ மிகவும் நல்லது மற்றும் பெரும்பாலான மக்கள் பயன்படுத்துகிறார்கள், இருப்பினும் பயனரின் INPUT ஐப் படிக்கும்போது அல்லது கோப்புகளிலிருந்து எடுக்கப்பட்ட மாறிகளை சொல் செயலாக்கத்தால் அச்சிட விரும்பினால், விசித்திரமான விஷயங்கள் நடக்கலாம். இரட்டை மேற்கோள்களை ஒற்றை அல்லது நேர்மாறாக மாற்றுவது அல்லது மேற்கோள்களிலிருந்து மாறி குறிப்புகளை எடுப்பது போன்ற எளிதில் அவை எளிதில் தீர்க்கப்படுகின்றன. «எக்கோOften விசித்திரமான விஷயங்கள் எவ்வாறு தொகுக்கப்பட்டன என்பதைப் பொறுத்து, நாம் எப்போதும் உபுண்டு அல்லது எப்போதும் ஃபெடோராவைப் பயன்படுத்தினால், அது நம்மைப் பாதிக்காது, ஆனால் விநியோகத்தை மாற்றினால் அது செய்கிறது.

அதனால்தான் நான் use ஐப் பயன்படுத்துகிறேன்வைட்டமின்«, இது எனக்கு தலைவலியைக் கொடுக்காது, மேலும் இது போல நடந்து கொள்கிறது«வைட்டமின்C சி அல்லது «இலிருந்துஅச்சுY பைதான், நீங்கள் எப்போதாவது உங்கள் ஸ்கிரிப்டை வேறொரு நிரலாக்க மொழியில் கொண்டு செல்ல விரும்பினால் இது மிகவும் முக்கியமானது.

இன்னும் விரிவான கலந்துரையாடலுக்கு நீங்கள் பார்வையிடலாம் ஸ்டேக் எக்ஸ்சேஞ்சில் யூனிக்ஸ் & லினக்ஸிலிருந்து இந்த கேள்வி.

4. பயனர் INPUT ஐப் படிக்கவும்

எங்கள் ஸ்கிரிப்ட்டின் பெயருக்குப் பிறகு மற்றும் ENTER விசையை அழுத்துவதற்கு முன்பு நாம் எழுதும் அனைத்தும் தானாகவே சிறப்பு மாறிகளில் சேமிக்கப்படும். இந்த மாறிகள் $ X வகையாகும், அங்கு X என்பது ஒரு எண்.

«$0Script எங்கள் ஸ்கிரிப்டின் பெயரையும் «இலிருந்து குறிக்கிறது$1After முடிவிலிக்கு நாம் பின்னர் எழுதிய அனைத்தும் மாறக்கூடியவை. உதாரணத்திற்கு:

பூனை << EOF >> test.sh #! / bin / bash # - * - குறியாக்கம்: UTF-8 - * - printf "\ $ 0 = $ 0 \ n" printf "\ $ 1 = $ 1 \ n" printf "\ = 2 = $ 2 \ n "EOF chmod + x script.sh ./script.sh my file.txt

நாங்கள் ஒரு சோதனை ஸ்கிரிப்டை உருவாக்கி, அதை இயக்கக்கூடியதாக மாற்றி, 2 அளவுருக்களுடன் இயக்குகிறோம். இதன் திரை வெளியீட்டை நாங்கள் பெறுகிறோம்:

$ 0 = ./script.sh $ 1 = எனது $ 2 = file.txt

மேற்கோள்களைப் பயன்படுத்தி "my file.txt" ஐ "$ 1" க்கு அனுப்பியிருக்கலாம்.

"வாசிப்பு" கட்டளையுடன் ஒரு பயனரின் INPUT ஐயும் படிக்கலாம், இது அளவுருவை நாம் சேமிக்க விரும்பும் மாறியை நேரடியாக குறிக்கிறது. உதாரணத்திற்கு:

printf "உங்கள் பெயர் என்ன? \ n" NAME printf ஐப் படிக்கவும் "ஹலோ, $ NAME. \ n"
மாறிகள் ஒதுக்கப்படுவதில் கவனமாக இருங்கள். "AR VAR = உள்ளடக்கம்" ஒரு பிழையை உருவாக்கும், சம அடையாளம், மாறி பெயர் மற்றும் உள்ளடக்கம் ஆகியவற்றிற்கு இடையில் எந்த இடைவெளிகளையும் விட முடியாது. சரியான பயன்பாடு "VAR = உள்ளடக்கம்"

5. பாஷில் கணக்கீடுகள்

அதற்கு நாம் «ஐப் பயன்படுத்தலாம்சொல்லமைப்புடன்«, சிக்கலான கணக்கீடுகளை நாம் செய்ய வேண்டியதில்லை. இரண்டு விஷயங்களை கவனிக்க வேண்டும், முதலாவது «சொல்லமைப்புடன்Number முழு எண்களை மட்டுமே ஒப்புக்கொள்கிறது, இரண்டாவதாக, பிரிவு முழு முடிவையும் அளிக்கிறது, மீதமுள்ளவற்றை நாம் பயன்படுத்தலாம் «%".

வழக்கமாக எக்ஸ்ப்ரரின் முடிவை ஒரு மாறிக்கு ஒதுக்க விரும்புகிறோம். நாம் அதை இரண்டு வழிகளில் செய்யலாம்:

VAR2 = `expr $ VAR1 / 10` VAR2 = $ (expr $ VAR1 / 100)

நீங்கள் தவிர்க்கலாம் «சொல்லமைப்புடன்Parent இரட்டை அடைப்புக்குறிகளைப் பயன்படுத்துதல்:

VAR2 = $ (($ VAR1 / 100%))
Of இன் மேலதிக விளக்கத்திற்குசொல்லமைப்புடன்Number அல்லது முழு எண்களைப் பயன்படுத்தும் ஒரு மாற்று, நீங்கள் பார்க்கலாம் இந்த KZKG a காரா நுழைவு.

6. அடிப்படையில்

இது ஏற்கனவே about பற்றி மிக விரிவான முறையில் எழுதப்பட்டுள்ளதுif" 'வேறு" 'ElifConditions மற்றும் நிபந்தனைகள். அதைப் பற்றி நீங்கள் படிக்கலாம்:

எளிய சதுர அடைப்புக்குறிகளைப் பயன்படுத்துவதற்கான வித்தியாசத்தை நான் முன்னிலைப்படுத்த விரும்புகிறேன், «[]«, மற்றும் இரட்டை அடைப்புக்குறிகள்,«[[]]«, நிபந்தனைகளுக்கு. இரட்டை அடைப்புக்குறிகளுடன் நாம் கூடுதல் நிபந்தனைகளைப் பயன்படுத்தலாம்:

  • «&&»மற்றும் மற்றும்
  • «||»க்கு அல்லது

உபயோகிக்க "&&"மேலும்"||Square எளிய சதுர அடைப்புக்குறிகளுடன், ஒவ்வொரு பகுதியும் தனித்தனி சதுர அடைப்புக்குறிக்குள் பிரிக்கப்பட வேண்டும். உதவி இயக்கப்பட வேண்டுமா என்று பார்க்கும் ஸ்கிரிப்ட்டின் பகுதிக்கு பயன்படுத்தப்படும் எடுத்துக்காட்டு:

if [-z "$ 1"] || ["$ 1" == "-ம"] || ["$ 1" == "- உதவி"]]; பின்னர் fi க்கு உதவுங்கள்

பிழைகளைத் தடுக்க மேற்கோள்களில் மாறி பெயர்களை எழுதுவதிலிருந்து இது நம்மைக் காப்பாற்றுகிறது. உதாரணத்திற்கு:

[$ 1 = 1] என்றால்; பின்னர் printf "அளவுரு 1 க்கு சமம்."; fi என்றால் ["$ 1" = 1]; பின்னர் printf "அளவுரு 1 க்கு சமம்."; fi என்றால் [[$ 1 = 1]]; பின்னர் printf "அளவுரு 1 க்கு சமம்."; fi

Script.sh எந்த அளவுருக்கள் இல்லாமல் இயங்கினால், முதல் வழக்கு பிழையைக் கொடுக்கும்:

bash: [: =: unary ஆபரேட்டர் எதிர்பார்க்கப்படுகிறது
பாஷில் "=" மற்றும் "==" இரண்டும் ஒரே வழியில் விளக்கப்படுகின்றன. பிற நிரலாக்க மொழிகளில் இது நடக்காது, அங்கு "=" மாறிகளை ஒதுக்க மட்டுமே பயன்படுத்தப்படுகிறது.

விவாதிக்கப்படாதது «வழக்கு«, எளிமைப்படுத்த பயன்படுகிறது«if«. எங்களிடம் எதுவும் இல்லாதபோது ஆரம்பத்தில் ஆரம்பிக்கலாம் «ifThe அனைத்து குறியீடும் செயல்படுத்தப்படும். நாம் ஒரு நிபந்தனையைச் சேர்த்தால் «ifTwo எங்களுக்கு இரண்டு வழக்குகள் இருக்கும், அவற்றில் ஒன்று குறியீடு தொகுதி உள்ளே இருக்கும் «ifBlock இந்த தொகுதி செயல்படுத்தப்படாத மற்ற வழக்கு.

நாம் ஒரு add ஐச் சேர்த்தால்வேறு«எங்களுக்கும் இரண்டு வழக்குகள் இருக்கும், ஆனால் இந்த இரண்டு வழக்குகளும் முந்தைய வழக்குகளிலிருந்து வேறுபட்டவை. ஏனென்றால் இப்போது இரண்டு நிபந்தனை குறியீடு தொகுதிகள், ஏ மற்றும் பி, மற்றும் ஒரு சி தொகுதி இருக்கும், இது மீதமுள்ள நிரலாகும். A அல்லது B செயல்படுத்தப்படும், மற்றும் C. முந்தைய வழக்கில் இது A மற்றும் C அல்லது C மட்டுமே.

எழுதும் நிலைமைகளைத் தவிர்க்க «if / else"உள்ளே"வேறு»மேலும் குறியீட்டின் வாசிப்பை எளிதாக்க, இது உருவாக்கப்பட்டது«Elif«. முந்தையதைப் பொறுத்து பல நிபந்தனைகள் நம்மிடம் இருக்கும்போது, ​​எடுத்துக்காட்டாக எண்களின் வரம்பு அல்லது வகை:

VAR1 = $ 1 என்றால் [[$ VAR1 = 1]]; பின்னர் printf "1 \ n" elif [[$ VAR1 = 2]]; பின்னர் printf "2 \ n" எலிஃப் [[$ VAR1 = 3]]; பின்னர் printf "3 \ n" else printf "none \ n" fi

கடைசி விஷயத்தில் «ElifConditions பல நிபந்தனைகள் படிக்கப்படும். இந்த செயல்முறை நெறிப்படுத்தப்பட்டால்:

VAR1 = case 1 வழக்கு $ VAR 1 இல்) printf "1 \ n" ;; 2) printf "2 \ n" ;; 3 | 4) printf "3 அல்லது 4, இது \ n" ஐப் பொறுத்தது; *) printf "none \ n" ;; அந்த சி

இந்த விஷயத்தில் VAR1 ஒரு மாறி படிக்கப்படும், மேலும் இது ஏதேனும் ஒரு வழக்குக்கு சமமானதா என்பதைப் பார்ப்போம், இல்லையெனில், இயல்புநிலை வழக்கு "*" செயல்படுத்தப்படும். இரட்டை அரைப்புள்ளிகள் «க்கு சமம்இடைவெளி«, அவர்கள் சொல்கிறார்கள்«வழக்கு»அது முடிவுக்கு வர வேண்டும்.

«வீடுகள்Of of இன் வரிசையாகவும் பயன்படுத்தப்படலாம்if«, அதற்கு நீங்கள்« ;; க்கு பதிலாக «;; &» (தொடரவும்) பயன்படுத்த வேண்டும் (நிறுத்து).

7. சுழல்கள்

எந்தவொரு நிரலாக்க மொழியிலும் மிகக் குறைந்த சுழல்கள் அறியப்படுகின்றன. பாஷில் அவை «போது" 'வரை"மேலும்"ஐந்து«. இது பற்றி ஏற்கனவே வலைப்பதிவில் எழுதப்பட்டுள்ளது:

இரண்டு வகையான சுழல்கள் உள்ளன «ஐந்து«, வகையைச் சேர்ந்தவை«L LOQUESEA இல் VAR க்காக»மற்றும் சி வகை என்ன«$ for ((I = 0; I <= 10; I ++))«. இரண்டாவது வகை சுழல்கள் «ஐந்துமிகவும் பயனுள்ளதாக இருக்கும், இது வளையத்தின் தொடக்கத்தில் 3 பகுதிகளைக் கொண்டுள்ளது:

  • மாறிகளின் அறிவிப்பு மற்றும் துவக்கம் (இந்த வழக்கில் ஒரு துணை மாறி "I = 0").
  • மரணதண்டனை நிலை (நான் 10 ஐ விட குறைவாகவோ அல்லது சமமாகவோ இருக்கும் வரை).
  • துணை மாறியின் அதிகரிப்பு

என் கருத்துப்படி இது எல்லாவற்றிலும் மிக சக்திவாய்ந்த வளையமாகும். ஒரு உதாரணம், இது 0 முதல் 10 வரையிலான அனைத்து எண்களையும் உள்ளடக்கியது, உள்ளடக்கியது:

#! / bin / bash for ((I = 0; I <= 10; I ++)); printf "$ I \ n" முடிந்தது

8. செயல்பாடுகள்

பாஷ் எங்களை செய்ய அனுமதிக்காத சில விஷயங்கள் உள்ளன, இல்லையா? முதல் பார்வையில், பாஷ் செயல்பாடுகள் 3 காரியங்களைச் செய்வதிலிருந்து உங்களைத் தடுக்கின்றன: செயல்பாடுகளில் உள்ளூர் மாறிகள் அறிவித்தல், செயல்பாடுகளுக்கு அளவுருக்களை அனுப்புதல் மற்றும் அளவுருக்களைத் திருப்புதல். எல்லாவற்றிற்கும் ஒரு தீர்வு உள்ளது.

அப்படி எதுவும் செய்ய வேண்டாம்:

#! / bin / bash VAR = 1 printc "$ VAR \ n" செயல்பாடு ஹலோ () {VAR = 2 printf "$ VAR \ n"} ஹலோ printf "$ VAR \ n"

இது 1, 2 மற்றும் 2 திரைக்கு அச்சிடுகிறது.

உள்ளூர் மாறிகள் அறிவிக்க, add சேர்க்கவும்உள்ளூர்Dec அறிவிக்கும் போது:

#!

இது திரையில் 1, 1, 2, 1 ஐ அச்சிடுகிறது.

ஒரு செயல்பாட்டிற்கு அளவுருக்களை எவ்வாறு அனுப்புவது?

#! / பின் / பாஷ் # - * - குறியாக்கம்: யுடிஎஃப் -8 - * - செயல்பாடு ஹலோ () {printf "ஹலோ $ 1 \ n"}

printf "உங்கள் பெயர் என்ன? \ n"
VAR1 ஐப் படிக்கவும்
ஹலோ $ VAR1

அளவுருக்கள் எவ்வாறு திரும்பப் பெறப்படுகின்றன?

#! / bin / bash # - * - குறியாக்கம்: UTF-8 - * - செயல்பாடு ஹலோ () {printf "ஹலோ ஹோலிடா"} printf "உங்கள் பெயர் என்ன? printf "$ VAR1 $ VAR1 \ n"

நீங்கள் பார்க்க முடியும் என, இது இரண்டு குறைபாடுகளைக் கொண்டுள்ளது, நீங்கள் ஒரு அளவுருவை மட்டுமே திருப்பித் தர முடியும், இது ஒரு திசையன் be ஆக இருக்கலாம், மேலும் நீங்கள் ஒரு அளவுருவைத் தர விரும்பினால், அந்தச் செயல்பாட்டிலிருந்து திரையில் இனி அச்சிட முடியாது.

செயல்பாடுகளைப் பற்றிய கூடுதல் விஷயங்களை [url=https://blog இல் காணலாம்.desdelinux.net/programando-en-bash-parte-3/]இந்த கட்டுரை Usemoslinux[/url] இலிருந்து.

9. கெட்டாப்ஸ்

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

#! / bin / bash # - * - குறியாக்கம்: UTF-8 - * - VARC = 0 செயல்பாட்டு உதவி () {printf "உதவி செய்தி \ n" வெளியேறு} என்றால் [[-z $ 1]]; getopts போது fi க்கு உதவுங்கள்: ha: b: c OPT; வழக்கு $ OPT இல் h) உதவி; :) உதவி ;; a) VARA = $ OPTARG ;; b) VARB = $ OPTARG ;; c) VARC = 1 ;; \?) உதவி ;; esac done # VARA, VARB மற்றும் VARC உடன் # விஷயங்களைச் செய்யும் ஸ்கிரிப்ட்டின் பிரதான தொகுதி

«கெட்டோப்ட்ஸ்The விருப்பங்களை ஒவ்வொன்றாகப் படிக்கிறது, எனவே ஒரு வளையம் தேவை.

Using ஐப் பயன்படுத்தி அனுப்பக்கூடிய 2 வகையான விருப்பங்கள் உள்ளனகெடோப்ட்ஸ்":

  • கொடிகள் எனப்படும் அளவுருக்கள், இந்த விஷயத்தில் -c அல்லது -h. நாம் பயன்படுத்த விரும்பும் கடிதத்துடன் அவை குறிப்பிடப்பட்டுள்ளன. அவை பூலியன் மாறிகள் போன்றவை, «உண்மை»(உள்ளன) அல்லது«தவறான"(அவர்கள் இங்கே இல்லை).
  • தொடர்புடைய வாதங்களுடன் அளவுருக்கள், -ஒரு எதையும், -பி எதையும். கீழே உள்ள பெருங்குடலுடன் நாம் விரும்பும் கடிதத்துடன் அவை குறிப்பிடப்பட்டுள்ளன. வாதம் OPTARG இல் சேமிக்கப்பட்டுள்ளது (இந்த பெயர் மாற்ற முடியாதது).
ஆரம்ப இரட்டை புள்ளிகள் எந்த பிழையும் காட்டாது.

இந்த ஸ்கிரிப்ட் என்ன செய்கிறது?

எந்த விருப்பமும் அனுப்பப்படாதபோது, ​​"-h" அளவுரு கடந்து செல்லும்போது, ​​தவறான அளவுரு கடந்து செல்லும் போது (எடுத்துக்காட்டாக "-x", இது "\?" ஆல் செய்யப்படுகிறது) அல்லது ஒரு போது எந்த வாதமும் இல்லாத செல்லுபடியாகும் அளவுரு (":"). மீதமுள்ள நிகழ்வுகளில் இது VARC இல் 1-ஆக "-c" இருப்பதைக் காப்பாற்றுகிறது, மேலும் VARA மற்றும் VARB இல் "-a" மற்றும் "-b" உடன் அனுப்பப்பட்ட மதிப்புகள்.


உங்கள் கருத்தை தெரிவிக்கவும்

உங்கள் மின்னஞ்சல் முகவரி வெளியிடப்பட்ட முடியாது. தேவையான புலங்கள் குறிக்கப்பட்டிருக்கும் *

*

*

  1. தரவுக்கு பொறுப்பு: மிகுவல் ஏஞ்சல் கேடன்
  2. தரவின் நோக்கம்: கட்டுப்பாட்டு ஸ்பேம், கருத்து மேலாண்மை.
  3. சட்டபூர்வமாக்கல்: உங்கள் ஒப்புதல்
  4. தரவின் தொடர்பு: சட்டபூர்வமான கடமையால் தவிர மூன்றாம் தரப்பினருக்கு தரவு தெரிவிக்கப்படாது.
  5. தரவு சேமிப்பு: ஆக்சென்டஸ் நெட்வொர்க்குகள் (EU) வழங்கிய தரவுத்தளம்
  6. உரிமைகள்: எந்த நேரத்திலும் உங்கள் தகவல்களை நீங்கள் கட்டுப்படுத்தலாம், மீட்டெடுக்கலாம் மற்றும் நீக்கலாம்.

  1.   ஏலாவ் அவர் கூறினார்

    மாஸ்டர். நான் இன்னும் U_U என்று சொல்லவில்லை

  2.   மிகுவல் அவர் கூறினார்

    வணக்கம் மிகவும் நல்ல கட்டுரை.
    ஏய் நீங்கள் chmod + x க்கு பதிலாக sudo + x அனுமதிகளை கொடுக்க வேண்டும்

    1.    ஹென்றி அவர் கூறினார்

      $ sudo chmod + x script.sh
      (இன்னும் சரியாகச் சொல்ல வேண்டுமானால்)

      ஆ, வாழ்த்துக்கள் மற்றும் நன்றி!

  3.   ஃபயர்கோல்ட் அவர் கூறினார்

    மிகவும் நல்ல பதிவு, நான் உங்களை வாழ்த்துகிறேன், தொடர்ந்து வைத்திருங்கள், வாழ்த்துக்கள்

  4.   கஸ்டாவொ அவர் கூறினார்

    ஸ்கிரிப்ட் இயக்கப்படும் போது அது படிப்படியாகக் காணப்பட வேண்டும் என நீங்கள் விரும்பினால், படிப்படியாக, மாறிகள், நிபந்தனைகள் மற்றும் அனைத்தும் எவ்வாறு செயல்படுகின்றன என்பதை உதாரணமாகப் பார்க்க, நீங்கள் பயன்படுத்தலாம்:

    sh -x ஸ்கிரிப்ட்

    மேற்கோளிடு

  5.   டகோ அவர் கூறினார்

    பயிற்சியின் PIECE. சிறந்த மற்றும் மிக நன்றாக விளக்கப்பட்டுள்ளது.
    நன்றி.

  6.   கேப்ரியல் அவர் கூறினார்

    விஷயத்தில் சிறந்த பதிவு

  7.   மரியோ கில்லர்மோ சவலா சில்வா அவர் கூறினார்

    மிகவும் சுவாரஸ்யமான மற்றும் முக்கியமானது, தகவலுக்கு நன்றி….
    சியர்ஸ் !!!

  8.   நோட்ஃப்ரூம்ப்ரூக்ளின் அவர் கூறினார்

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

  9.   அட்ரியன் அவர் கூறினார்

    மிகவும் நல்லது!

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

    இருப்பினும் நான் சரிசெய்யப்பட வேண்டும் என்று நினைக்கும் இரண்டு விவரங்களைக் கண்டுபிடித்தேன்.

    முதல்: பிரிவு in 2 இல். ஒரு ஸ்கிரிப்ட்டின் கட்டமைப்பு »செயல்பாடு மூடப்படவில்லை, இது ஒரு ஸ்கிரிப்ட்டில் இயக்கும்போது சிக்கல்களை ஏற்படுத்தும்.
    "வெளியேறு" கட்டளைக்குப் பிறகு ஒரு பிரேஸைச் சேர்ப்பதே தீர்வு.

    இரண்டாவது: பிரிவு «4 இல். பயனர் உள்ளீட்டைப் படியுங்கள் user பயனர் நுழையக்கூடிய அளவுருக்கள் $ 0 முதல் முடிவிலி வரை செல்கின்றன என்பதை நீங்கள் உறுதிப்படுத்துகிறீர்கள், இருப்பினும், "பாஷ்" $ 0 முதல் $ 9 வரை மட்டுமே விளக்கும், ஏனெனில் $ 10 $ 1 + 0 க்கு சமமாக இருக்கும்.
    இந்த சிக்கலை தீர்க்க, பின்வரும் மாறிகளைப் பிடிக்க "ஷிப்ட்" கட்டளையைப் பயன்படுத்தலாம். அல்லது "$ {10}" பிரேஸ்களில் மாறியைக் குறிப்பிடவும், இதனால் பாஷ் மதிப்புகளை ஒன்றாக எடுத்துக்கொள்கிறது, $ 1 + 0 ஆக அல்ல.

    மேலும் சந்தேகம் இல்லாமல், வாழ்த்துக்கள்!

    1.    நோட்ஃப்ரூம்ப்ரூக்ளின் அவர் கூறினார்

      உங்கள் கருத்துக்கு நன்றி. ஸ்கிரிப்ட் மற்றும் செயல்பாடுகளில் வெளியேறும் சரியான பயன்பாட்டை விளக்க இது முற்றிலும் தோல்வியுற்றது. $ {10 For ஐப் பொறுத்தவரை, நான் ஒருபோதும் இவ்வளவு வாக்களித்ததில்லை, அதனால் நான் அந்தப் பிரச்சினையில் சிக்கவில்லை, அதற்கு ஒரு தீர்வு இருக்கிறது என்பதை அறிவது நல்லது (இன்று நான் கற்றுக்கொண்ட புதிய விஷயத்தை ஏற்கனவே கடந்துவிட்டேன் 😀).

  10.   சானியோ அவர் கூறினார்

    கட்டுரைக்கு மிக்க நன்றி! நீங்கள் குறிப்பிட்ட சில விஷயங்களில் இன்னும் தெளிவு இல்லை. உதாரணமாக, கெட்டோப்ஸ்.
    திரை வெளியீடுகளின் ஒரு பகுதியில், நீங்கள் பின்னர் குறிப்பிட்ட பூனையை நீங்கள் குறிப்பிடவில்லை ...
    பூனை <
    ***************************************
    * இந்த படிவம் மிகவும் வெளிப்படையானது *
    ***************************************
    EOF

    உங்கள் எடுத்துக்காட்டில்:
    பூனை << EOF >> test.sh
    குறிப்பிட இரண்டு விஷயங்கள் உள்ளன ... >> இது 'append' அதாவது, நீங்கள் ஒரே கட்டளையை மீண்டும் செய்தால், முழு ஸ்கிரிப்டையும் நகலில் வைத்திருப்பீர்கள் ... நீங்கள் ஒன்றை மட்டுமே பயன்படுத்த வேண்டும் ...
    பூனை << EOF> script.sh
    ஆம், இதை script.sh என்றும் அழைக்க வேண்டும்
    பின்னர் உள்ளே
    if [-z "$ 1"] || ["$ 1" == "-ம"] || ["$ 1" == "– உதவி"]]; பிறகு
    உதவி
    fi

    இதை எழுத வேண்டும் என்று நினைக்கிறேன் ...
    if [[-z "$ 1"] || ["$ 1" == "-ம"] || ["$ 1" == "– உதவி"]]; பிறகு
    ...

    BASH இலிருந்து கண்டுபிடிக்க இன்னும் நிறைய இருக்கிறது.
    இதற்கு "பேசிக்ஸ்" என்று தலைப்பு வைக்க முடியுமா? 🙂
    எடுத்துக்காட்டாக, 'சோதனையாளர்கள்' அளவுரு காலியாக இருக்கிறதா என்று பார்க்க, அல்லது -f இது ஒரு கோப்பாக இருக்கிறதா என்பதை அறிய.

    உங்கள் முயற்சிக்கு மீண்டும் நன்றி.
    ஆல்பர்டோ

  11.   clow_eriol அவர் கூறினார்

    ஒரு நல்ல பாஷ் ஸ்கிரிப்ட் பயிற்சி!

  12.   OCZ அவர் கூறினார்

    -- குறியாக்கம்: யுடிஎஃப் -8 --

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

    என் கருத்துப்படி, யுடிஎஃப் -8 ஐப் பயன்படுத்தி பாஷில் ஸ்கிரிப்ட்களை எழுத, நீங்கள் (BOM இல்லாமல்) உரை கோப்பை மட்டுமே சேமிக்க வேண்டும் மற்றும் சில சூழல் மாறிகள் (LANG மற்றும் LC_ *) சரியாக அமைக்கப்பட்டிருக்க வேண்டும்.
    பின்னர், வெளிப்படையாக, செயல்படுத்தப்பட்ட கட்டளைகள் ASCII ஐத் தவிர வேறு குறியாக்கங்களுக்குத் தயாரிக்கப்படுவது அவசியம். எடுத்துக்காட்டாக, நாம் பெரிய எழுத்துக்குச் செல்ல விரும்பினால், இது வேலை செய்யத் தெரியவில்லை:
    «எதிரொலி áéíóú | tr az AZ »
    o:
    «எதிரொலி áéíóú | tr [: கீழ்:] [: மேல்:] »
    பயன்படுத்துவது நல்லது:
    «எதிரொலி áéíóú | awk '{அச்சு டப்பர் ($ 0)}' ».

    1.    நோட்ஃப்ரூம்ப்ரூக்ளின் அவர் கூறினார்

      பற்றி "குறியீட்டுBefore இதற்கு முன்னர் இந்த வலைப்பதிவில் குறிப்பிடப்பட்டுள்ளது:

      பாஷ்: ஸ்கிரிப்டை எவ்வாறு இயக்க முடியும்
      நிறுவல் பயன்பாட்டு ஸ்கிரிப்டை இடுகையிடவும்

    2.    உங்களைப் போன்ற borriquito அவர் கூறினார்

      யாரோ என்னைத் திருத்துகிறார்கள், ஆனால் அந்த குறியீட்டு வரி (# -- குறியாக்கம்: யுடிஎஃப் -8 --) இது பாஷ் அல்லது ஷெல்லுடன் எந்த தொடர்பும் இல்லை: இது ஒரு கருத்து வரி (# உடன் தொடங்குகிறது) மற்றும் கோப்பின் குறியாக்கத்தை ஸ்கிரிப்டை (விம், ஈமாக்ஸ் ...) எழுத நாங்கள் பயன்படுத்துகிறோம் என்று எடிட்டரிடம் சொல்ல உதவுகிறது.

      உண்மையில், பாஷ் அத்தகைய வரியைக் காணவில்லை, ஏனென்றால் இது ஒரு கருத்து வரி.

  13.   JoRgE-1987 அவர் கூறினார்

    சிறந்த பயிற்சி, சிசாட்மின் பாஷில் ஸ்கிரிப்ட்டை அறிவது அவசியம் என்பதால், இது எல்லாவற்றிற்கும் பயனுள்ளதாக இருக்கும்.

    மிகவும் நல்ல!

    நன்றி!

  14.   எட்வர்டோ குவோமோ அவர் கூறினார்

    இது யாருக்கும் பயனுள்ளதாக இருந்தால், உங்கள் சொந்த ஸ்கிரிப்ட்களை உருவாக்க பல பயன்கள் மற்றும் எடுத்துக்காட்டுகள் இங்கே: https://github.com/reduardo7/hsabx

  15.   கருப்பு லிட்டோ அவர் கூறினார்

    மிகவும் நல்லது. எனது ஸ்கிரிப்ட்களில் சேர்க்க புதிய விஷயங்கள். குறியாக்கம் மற்றும் printf விஷயம் அதைக் கொண்டிருக்கவில்லை.
    நன்றி!!!

  16.   xxxtonixxx அவர் கூறினார்

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