Съдържание:
-
Командна процедура без параметри може да бъде извикана по следния начин -
./<име на файла с процедурата>
. В процедурата се съдържат команди, които могат да се извикат и поотделно в команден интерпретатор.Пример за съдържанието на командна процедура:
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 # <празна>
-
$*
- дава символен низ с параметрите от командния ред$@
- дава масив с параметрите от командния ред$#
- дава броя на параметрите от командния ред$$
- PID на текущия процес$?
- код на завършване на последния завършил процес
-
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
ще мине през всеки отделен елемент от списъка.
- Важно е да се отбележи, че в bash, всички променливи са символни низове. Като списък може да се разгледа всеки string от типа -