NBash
225 строк · 5.4 Кб
1#!/bin/bash
2
3# Переменные
4
5# Переменные среды
6
7echo "Путь до нашего хомяка $HOME"
8
9echo "Стоимость компьютера \$1000"
10
11# Пользовательские переменные
12
13readonly COLOR="Зеленый"
14readonly COLOR_CODE="#008000"
15
16echo "Код цвета $COLOR - $COLOR_CODE"
17
18kernelVersion=$(uname -a)
19
20echo "$kernelVersion"
21
22# Математические операции
23
24someNumber=2
25anotherNumber=4
26
27summ=$((someNumber + anotherNumber))
28echo "summ of $someNumber and $anotherNumber is $summ"
29
30diff=$((someNumber - anotherNumber))
31echo "diff of $someNumber and $anotherNumber is $diff"
32
33div=$((someNumber / anotherNumber))
34echo "div of $someNumber and $anotherNumber is $div"
35
36mult=$((someNumber * anotherNumber))
37echo "mult of $someNumber and $anotherNumber is $mult"
38
39# someNumberFloat=2.56
40# summ=$(($someNumber + $someNumberFloat))
41# echo "summ of $someNumber and $someNumberFloat is $summ"
42
43# Массив
44
45# Индексированные массивы
46declare -a myArray
47myArray[0]=1
48myArray[1]=2
49myArray[2]=3
50
51
52myArray2=(One Two Three)
53
54echo "${myArray[2]}"
55echo "${myArray2[1]}"
56
57# Ассоциативные массивы
58
59declare -A myArrayA
60myArrayA[One]=1
61myArrayA[Two]=2
62myArrayA[Three]=3
63
64echo "${myArray[@]}"
65echo "${myArray2[@]}"
66echo "${!myArrayA[@]}"
67echo "${myArrayA[@]}"
68
69declare -A myArrayA2=(
70[four]=4
71[Five]="Five"
72[six]=6
73)
74
75echo "${!myArrayA2[@]}"
76echo "${myArrayA2[@]}"
77echo "${myArrayA2[Five]}"
78
79echo $((myArrayA2[four] + myArrayA2[six]))
80
81# Операции с массивами
82
83# Длина массива
84echo "Количество элементов массива myArray: ${#myArray[@]}"
85
86declare -a array
87
88array[3]=3
89array[5]=5
90array[10]=10
91
92echo "Количество элементов массива array: " "${#array[@]}"
93echo "Количество элементов массива array: " "${#array[*]}"
94echo "Индексы элементов массива array: " "${!array[@]}"
95
96# Установка и удаление индексированных элементов массива
97
98unset array
99array[2]="Two"
100
101echo "Количество элементов массива array: " "${#array[@]}"
102echo "Индексы элементов массива array: " "${!array[@]}"
103
104# Добавление элемента в массив
105array[5]=3
106
107array+=(10)
108array+=(11)
109array+=(12)
110
111array+=("${myArray[@]}")
112
113echo "Количество элементов массива array: " "${#array[@]}"
114echo "Индексы элементов массива array: " "${!array[@]}"
115echo "Элементы массива array: " "${array[@]}"
116echo "${array[10]}"
117
118# if then
119
120# username=$USER
121
122# if grep $username /etc/passwd
123# then
124# echo "user $username exist"
125# fi
126
127username=user123
128
129if grep $username /etc/passwd
130then
131echo "user $username exist"
132elif ls /home1
133then
134echo "ls home works"
135else
136echo "user $username doesn't exist"
137fi
138
139# Сравнение чисел
140
141# -eq - равно (==)
142# -ge - больше или равно (>=)
143# -gt - больше (>)
144# -le - меньше или равно (<=)
145# -lt - меньше (<)
146# -ne - не равно (!=)
147
148num1=1
149num2=2
150num3=3
151
152if [ $num1 -eq $num2 ]
153then
154echo "Yes"
155elif [ $num1 -gt $num3 ]
156then
157echo "num1 less then num3"
158else
159echo "No"
160fi
161
162# Сравнение строк
163
164# = - равно
165# != - не равно
166# < - меньше
167# > - больше
168# -n - истина если длина строки не нулевая
169# -z - истина если длина строки нулевая
170
171someString="Tes"
172anotherString="Test"
173thirdString=""
174
175someString=$thirdString
176
177if [ "$someString" = "$anotherString" ]
178then
179echo "$someString = $anotherString"
180elif [ "$someString" \> "$anotherString" ]
181then
182echo "$someString > $anotherString"
183elif [ "$someString" \< "$anotherString" ]
184then
185echo "$someString < $anotherString"
186# elif [ $someString -z ]
187# then
188# echo "someString is empty"
189else
190echo "someString=$someString"
191fi
192
193# Проверка файлов
194
195# -d name - истина если файл существует и является директорией
196# -e name - истина если существует файл
197# -f name - истина если файл существует и является файлом
198# -r name - истина если файл существует и доступен для чтения
199# -s name - истина если файл существует и он пустой
200# -w name - истина если файл существует и доступен для записи
201# -x name - истина если файл существует и доступен для исполнения
202
203# -nt - проверяется является ли файл более новым
204# по сравнению с другим
205
206# -ot - проверяется является ли файл более старым
207# по сравнению с другим
208
209# -O name - проверяет что файл существует и его владелец
210# текущий пользователь
211
212# -G name - проверяет что файл существует и индентификатор
213# группы соответствует идентификатору группы текущего пользователя
214
215echo "Files and directories"
216
217homeDir=$HOME
218scriptsDir="/Bash/scripts"
219
220if [ -w "$homeDir$scriptsDir/someFile1" ]
221then
222echo "Yes"
223else
224echo "No"
225fi