Skip to content
This repository has been archived by the owner on Oct 26, 2024. It is now read-only.

Latest commit

 

History

History
116 lines (88 loc) · 4.88 KB

File metadata and controls

116 lines (88 loc) · 4.88 KB

Тема 5.2. Kомандни процедури без и с позиционни параметри. Цикли.

Съдържание:

  1. Командни процедури без параметри
  2. Запазени стойности на позиционните параметри
  3. Shell цикли

1. Комадни процедури без параметри/с позиционни параметри.

  • Командна процедура без параметри може да бъде извикана по следния начин - ./<име на файла с процедурата>. В процедурата се съдържат команди, които могат да се извикат и поотделно в команден интерпретатор.

    Пример за съдържанието на командна процедура:

    echo "LIST /home/rick"
    ls /home/rick
    
  • Когато изпълняваме една командна процедура, можем да и дадем и някакви параметри. Пример:

    comproc1 param1 param2 ...
    
    • Командният интерпретатор присвоява тези параметри на специални системни променливи $0, $1, $2 ... $n като всяко число n отговаря на n-тия подаден позиционен параметър.

    • ВАЖНО: $0 винаги пази името на командата, подобно на на argv в C.

    • Пример:

    Ако изпълним командната процедура ./comproc1 по този начин:

    ./comproc1 param1 param2 param3
    

    То тогава, позиционните параметри ще са зададени по следния начин:

    еcho $0 # ./comproc1
    echo $1 # param1
    echo $2 # param2
    echo $3 # param3
    
    • Можем да използваме и командата set за да променяме стойностите на позиционните аргументи.

    Пример:

    • Aко извикаме командната процедура:
    $ ./comproc1 param1 param2 param3
    

    То тогава, позиционните параметри ще са зададени по следния начин:

    еcho $0 # ./comproc1
    echo $1 # param1
    echo $2 # param2
    echo $3 # param3
    
    set new1 new2 # промяна на позиционните аргументи
    
    еcho $0 # ./comproc1
    echo $1 # new1
    echo $2 # new2
    echo $3 # <празна>
    
    set $(date)
    
    echo $1 # 20.06.2024
    echo $2 # (чт)
    echo $3 # 16:00:12
    echo $4 # EEST
    echo $5 # <празна>
    

2. Запазени стойности на позиционните параметри

  • $* - дава символен низ с параметрите от командния ред
  • $@ - дава масив с параметрите от командния ред
  • $# - дава броя на параметрите от командния ред
  • $$ - PID на текущия процес
  • $? - код на завършване на последния завършил процес

3. Shell цикли

  • while цикъл

    while условие
    do
        команда1
        команда2
        команда3
        ...
    done
    
    • На мястото на условие се поставя команда, като спрямо резултатът от нея (return code-a ѝ) се продължава/излиза от цикъла.

    • Често се използва командата test (виж man 1 test), която може да се запише по следните 2 начина:

      • test <EXPRESSION>
      • [ <EXPRESSION> ].
    • Посредством test могат да се сравняват стойности, да се проверяват файлове и т.н.

  • for цикъл

    for променлива in [списък]
    do 
        команда1
        команда2
        ...
    done
    
    • Важно е да се отбележи, че в bash, всички променливи са символни низове. Като списък може да се разгледа всеки string от типа - "var1 var2 ...". Тогава for ще мине през всеки отделен елемент от списъка.