प्रौद्योगिकी साझेदारी

[Linux][Shell][Shell variables] इति विस्तरेण व्याख्यातम्

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


1. स्थानीयचराः

  • Shell चरं परिभाषयन्तु, चरनाम योजयितुं आवश्यकता नास्ति$
  • स्थानीय चरकेवलं उपयोक्तुः वर्तमानशैलजीवनकाले एव वैधः

2. चरपरिभाषा

  • चर नाम आवश्यकताएँ: अक्षरैः, संख्याभिः, अधोरेखाभिः च निर्मितम् अस्ति ।
  • चरनामानि कठोररूपेण लघुसंवेदनशीलाः भवन्ति

3. चरमूल्यं प्राप्नुत

  • अपोस्ट्रोफी: यत् पश्यसि तत् एव प्राप्नोषि, दृढं उद्धरणम्
  • द्विगुण उद्धरण: सर्वाणि सामग्रीनि उद्धरणचिह्नेषु निर्गन्तुं, विशेषचिह्नानि, दुर्बलसन्दर्भान् च चिन्तयन्तु
  • उद्धरणं नास्ति: निरन्तरचिह्नानि उद्धरणचिह्नानि विना भवितुम् अर्हन्ति यदि रिक्तस्थानानि सन्ति तर्हि द्विगुणं उद्धरणचिह्नानां प्रयोगः सर्वोत्तमः।
  • backtick इति: आदेशनिष्पादनपरिणामं सन्दर्भयति, समं$()प्रयोगः

4.विशेषचराः

  • शेल् इत्यस्य विशेषचराः, स्क्रिप्ट्-मध्ये, फंक्शन्-मध्ये च पैरामीटर्स्-पास्-करणाय उपयुज्यन्ते ।

  • तत्र निम्नलिखितविशेषस्थानमापदण्डचराः सन्ति ।

    चरःपरिणाम
    $0शेल् स्क्रिप्ट् सञ्चिकानाम स्क्रिप्ट् मार्गं च प्राप्नुवन्तु
    $nशेल् स्क्रिप्ट् इत्यस्य nth पैरामीटर् प्राप्नुवन्तु यदि 9 तः अधिकं भवति तर्हि केचन{},इव{$10}
    $#निष्पादितस्य शेल् स्क्रिप्ट् इत्यस्य पृष्ठतः पैरामीटर्स् इत्यस्य कुलसङ्ख्यां प्राप्नुवन्तु
    $*शेल् स्क्रिप्ट् इत्यस्य सर्वाणि पैरामीटर्स् प्राप्नुवन्तु, उद्धरणं विना, तस्य तुल्यम् अस्ति$@फंक्शन्, प्लस् उद्धरणचिह्नानि "$*", अस्तिसर्वाणि पैरामीटर्स् एकं स्ट्रिंग् रूपेण प्राप्नोति
    $@उद्धरणचिह्नं विना प्रभावः उपरिष्टाद् एव भवतिसर्वाणि पैरामीटर्स् स्वतन्त्र स्ट्रिंग् रूपेण प्राप्नुवन्तु

5.विशेष अवस्था चर

  • अन्वेषणविधिःman bash,अन्वेषणSpecial Parameters

    चरःपरिणाम
    $?अन्तिमस्य आदेशनिष्पादनस्थितेः मूल्यं प्रत्यागच्छति, 0 सम्यक् अस्ति, non-0 विफलम् अस्ति
    $$वर्तमानस्य शेल् स्क्रिप्ट् इत्यस्य प्रक्रियासङ्ख्या
    $!अन्तिमपृष्ठभूमिप्रक्रियायाः PID
    $_अन्तिम-आदेशस्य अन्तिम-पैरामीटर् प्राप्नुवन्तु

6. शेल् अन्तः निर्मिताः चर-आदेशाः

१.प्रतिध्वनिः

  • पैरामीटर्
    • -n: रेखाविरामं विना सामग्रीं निर्गन्तुं
    • -e: पलायनवर्णानां व्याख्यां कुरुत
      • n: नवपङ्क्तिः
      • r: प्रवेश
      • t:तब
      • b:पृष्ठस्थानम्
      • v: ऊर्ध्वाधर ट्याब वर्ण

2.eval

  • नियोग:बहुविधाः आदेशाः निष्पादयन्तु
  • उदाहरणeval ls; cd ~

3.exec

  • नियोग: बालप्रक्रिया न निर्माय अनन्तरं आदेशान् निष्पादयन्तु ।execनिष्पादनस्य अनन्तरं स्वयमेवexit

7. तारं अवरुद्धं कुर्वन्तु

  • व्याकरणम्

    व्याकरणम्परिणाम
    #आरम्भादेव लघुतमं मेलनं निष्कासयन्तु
    ##आरम्भादेव दीर्घतमं मेलनं निष्कासयन्तु
    %अन्ते लघुतमं मेलनं निष्कासयन्तु
    %%अन्ते दीर्घतमं मेलनं निष्कासयन्तु
    #निर्दिष्टवर्णसामग्रीणां अवरोधः
    a*ca इत्यनेन आरभ्य, मध्ये यत्किमपि वर्णं भवति, c इत्यनेन च समाप्तं तारं मेलयति
    ${变量}चर मूल्यं प्रत्यागच्छतु
    ${#变量}चरदीर्घता, वर्णदीर्घता प्रत्यागच्छतु
    ${变量:start}चर आफ्सेट् मूल्यस्य अनन्तरं वर्णं प्रत्यागच्छति
    ${变量:start:length}ऑफसेट् इत्यस्य अनन्तरं दीर्घतायाः सीमिताः वर्णाः निष्कासयन्तु
    ${变量#word}चरस्य आरम्भात् लघुतमं मेलयुक्तं शब्द उपस्ट्रिंग् विलोपयन्तु
    ${变量##word}चरस्य आरम्भात् दीर्घतमं मेलशब्दं विलोपयन्तु
    ${变量%word}चरस्य अन्ते लघुतमं मेलयुक्तं शब्दं उपस्ट्रिंग् निष्कासयन्तु
    ${变量%%word}चरस्य अन्ते दीर्घतमं मेलयुक्तं शब्द-उपस्ट्रिंग् निष्कासयन्तु
    ${变量/pattern/string}प्रथमं मेलप्रतिरूपं स्ट्रिंग् इत्यनेन प्रतिस्थापयन्तु
    ${变量//pattern/string}सर्वाणि प्रतिमानं स्ट्रिंग् इत्यनेन प्रतिस्थापयन्तु
  • संचालन उदाहरणम्: सञ्चिकानाम विलोपयतु

    # 通过⼦串的替换⽅式
    snowk@SnowKYP# f=stu_102999_1_finished.jpg
    
    # 变量的⼦串功能,去掉后缀
    snowk@SnowKYP# echo ${f//_finished/}
    stu_102999_1.jpg
    
    # 利⽤变量的反引⽤替换⽂件名
    snowk@SnowKYP# mv $f `echo ${f//_finished/}`
    
    # 剩下的⽂件,利⽤循环操作
    # 找出剩下所有需要替换的jpg⽂件
    snowk@SnowKYP# ls *fin*.jpg
    stu_102999_2_finished.jpg stu_102999_3_finished.jpg stu_102999_4_finished.jpg
    stu_102999_5_finished.jpg
    
    # 写shell循环代码,循环操作
    # 去掉所有jpg⽂件的_finished后缀
    snowk@SnowKYP# for file in `ls *fin*.jpg`;do mv $file `echo ${file//_finished/}`;done
    
    snowk@SnowKYP# ls *.jpg
    stu_102999_1.jpg stu_102999_2.jpg stu_102999_3.jpg stu_102999_4.jpg stu_102999_5.jpg
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

8. विशेषशैलविस्तारचरप्रक्रियाकरणम्

1. व्याकरणम्

  • नियोग: एते चत्वारः विस्तारिताः चराः सर्वे चरमूल्यानां निर्णयस्य संसाधनस्य च सन्ति ।
  • व्याकरणम्parameter,参数,范围
    • ${parameter:-word}:यदिparameterचरमूल्यं रिक्तं भवति, returnwordसूत्र
    • ${parameter:=word}:यदिparameterचरमूल्यं रिक्तं भवति तर्हिwordएकं चरमूल्यं प्रतिस्थापयति तस्य मूल्यं च प्रत्यागच्छति
    • ${parameter:?word}:यदिparameterचरमूल्यं रिक्तं भवति, .wordयथाstderrआउटपुट्, अन्यथा आउटपुट् चर मूल्यम्
      • चरं रिक्तं सेट् कृत्वा त्रुटिसन्देशं प्रत्यागन्तुं प्रयुक्तम् ।
    • ${parameter:+word}:यदिparameterयदि चरमूल्यं रिक्तं भवति तर्हि किमपि न कुर्वन्तु अन्यथाwordनिर्वतनम्

2. अनुप्रयोगपरिदृश्यानि

  • Data backup, अवधिसमाप्तदत्तांशं विलोपयितुं स्क्रिप्ट्
    # 原脚本命令,有bug,有歧义
    find ${file_path} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f
    
    # 修正后的脚本命令
    # 如果有bug起义,就在当前目录搜索并执行删除
    find ${file_path:=/tmp} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6