$ ./myscript.sh

bash: ./myscript.sh: Отказано в доступе

$ chmod +x myscript.sh

$ ./myscript.sh

Enter a value: 10

adding value

The new value is 20

Пример 4

$ cat run.sh

doSam () {

echo "magic"

return 0

}

if doSam;then

echo "Its true"

fi

$ sh run.sh

magic

Its true

В этом случае return 0 означает true, когда

return 1 в традиционном булевом смысле означает

false.

Глава 4.Переменные.

Переменные -это ячейка памяти,содержащаяся в себе

определенные данные. Имена переменных не должны

начинаться с цифры.

4.1 Присваивание значений переменным.

Значения присваиваются переменным с помощью операции = Присваиваемое значение не должно отделяться пробелами от имени переменной.

В одной строчке можно присвоить значение сразу

нескольким переменным.

$ firstname=Max lastname=Corn

$ echo $firstname; echo $lastname

Max

Corn

если значение по команде declare -i , то правая часть как вырражение

$ i=3+5 ;echo $i

3+5

$ declare -i jj; jj=5+3; echo $jj

8

4.2 Подстановка переменных.

Установить значение переменной,проверить.

$ a=123; echo $a;

123

$ echo {$a}

{123}

$ echo {\$a};

{$a}

echo {'$'$a}

{$123}

${переменная}

Использовать значение переменной для массивов.

$ a=(0 1 2 )

$ echo ${a[1]}

1

${переменная :-значение} Использовать

переменную, если она указана, иначе – заданное

значение.

$ b=5

$ echo ${b:-10}

5

max@hp:~$ echo ${c:-10}

10

${переменная :=значение}

Использовать переменную,иначе заданное значение, присвоив его указанной переменной

max@hp:~$ echo ${USER:=max2}

max

max@hp:~$ echo ${USER1:=max2}

max2

${переменная :?значение}

Использовать указанное значение если она

установлена, иначе выйти из оболочки.

$ echo ${c:?125}

bash: c: 125

${переменная :+значение}

Использовать указанное значение,иначе не

использовать ничего.

$ c=file1.txt

$ echo ${c:+filen.txt}

filen.txt

$ echo ${d:+filen.txt}

$

${#переменная} Использовать длину указанной

переменной.

$ echo $c

file1.txt

$ echo ${#c}

9

$ ${#*},${#@} Использовать количество позиционных параметров.

${переменная #шаблон}

Использовать после удаления слева

теста ,совпадающего с шаблоном. Удалить самый короткий совпадающий фрагмент.

c=file1.txt

1.txt

${переменная##шаблон} Удалить самый длинный

совпадающий фрагмент

$ echo ${c##file}

1.txt

${переменная ##шаблон} То же что и

ранее ,короткий и длинный фрагмент справа.

${переменная %шаблон}

${переменная %%шаблон}

$ echo ${c%.txt}

file1

max@hp:~$ echo ${c%%txt}

file1.

${переменная /шаблон/замена}

$ data=`date`

$ echo ${data}

Чт июн 13 10:56:05 MSK 2019

$ echo ${data/Чт}

июн 13 10:56:05 MSK 2019

${переменная //шаблон/замена}

$ echo ${data//Чт июн/Пт июль}

Пт июль 13 10:56:05 MSK 2019

${переменная /#шаблон/замена}

${переменная /%шаблон/замена}

Использовать max@hp:~$ greeting="hello friend"

$ declare -n message=greeting

$ echo message

message

$ echo $message

hello friend

$ message="by now"

$ echo $greeting

by now

$ {переменная@P} Вычислить значение указанной переменной.

$ echo ${c@P}

file1.txt

$

$ {переменная@Q} Заключить в кавычки значение указанной переменной.

$ c=file1.txt

$ echo ${c@Q}

'file1.txt'

${!переменная }

Использовать значение указанной переменной в качестве имени другой переменной ,значение которой должно быть использовано.

4.3 Косвенные переменные.

Косвенные переменные-это переменные именующие другие переменные.

Косвенные переменные создаются по команде

declare -n

Пример 1

$ greeting=privet

$ echo $greeting

privet

$ declare -n message=greeting

$ echo $message

privet

Пример 2 Присвоить через косвенную переменную

значение основной переменной.

$ message=otvet

$ echo $greeting

otvet

Пример 3 Применение псевдонима

$ text=ok

$ echo $(!text)

echo $(text=ok)

4.4 Переменные, встроенные в оболочку.

Основные переменные.

$# количество аргументов в командной строке.