Unix / Linux - Shell Basic Operators

Привет,future программисты! Я рад помочь вам изучить fascinierende мир Unix/Linux shell операторов. Как кто-то, кто преподавал информатику более десяти лет, я могу вам сказать, что овладение этими операторами изменит вашу programmier之旅. Давайте окунемся!

Unix / Linux - Basic Operators

Арифметические операторы

Арифметические операторы являются строительными блоками математических операций в shell-скриптовании. Они позволяют нам выполнять базовые расчеты в наших скриптах.

Вот таблица самыхcommon арифметических операторов:

Оператор Описание Пример
+ Сложение expr $a + $b
- Вычитание expr $a - $b
* Умножение expr $a \* $b
/ Деление expr $a / $b
% Остаток от деления expr $a % $b
= Присваивание a=$b

Давайте рассмотрим практический пример:

#!/bin/bash
a=10
b=5

echo "Сложение: `expr $a + $b`"
echo "Вычитание: `expr $a - $b`"
echo "Умножение: `expr $a \* $b`"
echo "Деление: `expr $a / $b`"
echo "Остаток от деления: `expr $a % $b`"

В этом скрипте мы используем команду expr для выполнения арифметических операций. Обратные кавычки () используются для выполнения командыexpr` и замены ее вывода.

Когда вы запустите этот скрипт, вы увидите:

Сложение: 15
Вычитание: 5
Умножение: 50
Деление: 2
Остаток от деления: 0

Помните, в shell-скриптовании пробелы имеют важное значение. expr$a+$b не сработает, но expr $a + $b сработает. Это как если бы вы давали вашим переменным место для дыхания!

Реляционные операторы

Реляционные операторы используются для сравнения значений. Они必需ны для создания условий в ваших скриптах.

Вот таблица реляционных операторов:

Оператор Описание Пример
-eq Равно [ $a -eq $b ]
-ne Не равно [ $a -ne $b ]
-gt Больше чем [ $a -gt $b ]
-lt Меньше чем [ $a -lt $b ]
-ge Больше или равно [ $a -ge $b ]
-le Меньше или равно [ $a -le $b ]

Давайте посмотрим, как они работают:

#!/bin/bash
a=10
b=20

if [ $a -eq $b ]
then
echo "$a равен $b"
elif [ $a -gt $b ]
then
echo "$a больше чем $b"
else
echo "$a меньше чем $b"
fi

Этот скрипт сравнивает a и b с использованием реляционных операторов. Когда вы запустите его, вы увидите:

10 меньше чем 20

Совет: Представьте эти операторы как вопросы. "-eq" как будто спрашивает "Равны ли они?", "-gt" спрашивает "Больше ли это того?". Это помогает verbalize сравнения, когда вы пишете свои скрипты.

Логические операторы

Логические операторы позволяют нам combine несколько условий. Они как логический клей ваших скриптов.

Вот таблица логических операторов:

Оператор Описание Пример
! НЕ [ ! false ]
-o ИЛИ [ $a -lt 20 -o $b -gt 100 ]
-a И [ $a -lt 20 -a $b -gt 100 ]

Давайте используем их в скрипте:

#!/bin/bash
a=10
b=20

if [ $a -lt 20 -a $b -gt 15 ]
then
echo "Оба условия истины"
else
echo "Как минимум одно условие ложно"
fi

Когда вы запустите этот скрипт, вы увидите:

Оба условия истины

Мне нравится думать о логических операторах как о инструментах для принятия решений. Они помогают вашему скрипту принимать решения на основе нескольких факторов, как мы делаем это в реальной жизни!

Строковые операторы

Строковые операторы используются для сравнения и обработки текстовых строк. Они incredibly полезны при работе с текстовыми данными.

Вот таблица строковых операторов:

Оператор Описание Пример
= Равно [ $a = $b ]
!= Не равно [ $a != $b ]
-z Строка пуста [ -z $a ]
-n Строка не пуста [ -n $a ]
str Строка не пуста [ $a ]

Давайте посмотрим, как они работают:

#!/bin/bash
a="Привет"
b="Мир"

if [ $a = $b ]
then
echo "Строки равны"
elif [ -z $a ]
then
echo "Строка a пуста"
elif [ -n $b ]
then
echo "Строка b не пуста"
else
echo "None из указанных условий истины"
fi

Когда вы запустите этот скрипт, вы получите:

Строка b не пуста

Строковые операторы как грамматические правила shell-скриптования. Они помогают вам понимать текст, с которым работает ваш скрипт.

Операторы теста файлов

Операторы теста файлов используются для тестирования различных файловых условий. Они必需ны, когда ваш скрипт interacts с файлами и каталогами.

Вот таблица некоторых common файловых тест-операторов:

Оператор Описание Пример
-d file Каталог существует [ -d $file ]
-f file Файл существует и является обычным файлом [ -f $file ]
-r file Файл читаем [ -r $file ]
-w file Файл записываем [ -w $file ]
-x file Файл выполняем [ -x $file ]
-s file Файл не нулевого размера [ -s $file ]

Давайте используем их в скрипте:

#!/bin/bash
file="/etc/passwd"

if [ -f $file ]
then
echo "Файл существует"
if [ -r $file ]
then
echo "Файл читаем"
fi
if [ -w $file ]
then
echo "Файл записываем"
fi
if [ -x $file ]
then
echo "Файл выполняем"
fi
else
echo "Файл не существует"
fi

Когда вы запустите этот скрипт, вы можете увидеть что-то вроде:

Файл существует
Файл читаем

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

Операторы C Shell

C Shell (csh) имеет свой собственный набор операторов, который немного отличается от Bourne Shell. Вот несколько примеров:

#!/bin/csh
set a = 10
set b = 20

if ($a == $b) then
echo "a равен b"
else if ($a != $b) then
echo "a не равен b"
endif

if ($a > $b) then
echo "a больше чем b"
else if ($a < $b) then
echo "a меньше чем b"
endif

В C Shell мы используем == для equality и != для inequality. Также мы можем напрямую использовать > и < для сравнений.

Операторы Korn Shell

Korn Shell (ksh) combines функции как Bourne Shell, так и C Shell. Вот пример:

#!/bin/ksh
a=10
b=20

if ((a == b))
then
print "a равен b"
elif ((a != b))
then
print "a не равен b"
fi

if ((a > b))
then
print "a больше чем b"
elif ((a < b))
then
print "a меньше чем b"
fi

В Korn Shell мы можем использовать (( и )) для арифметических операций и сравнений, что делает синтаксис чище и более интуитивным.

Помните, практика делает perfect! Не бойтесь экспериментировать с этими операторами в своих собственных скриптах. Each время вы используете их, вы станете более комфортно и профессионано. Счастливого скриптования!

Credits: Image by storyset