$ баш <ex1
Можно прочитать в
ex1запрограммировать и выполнить
Его общая форма:
$ имя скрипта bash [параметр]
Например:
$ bash ex2 /usr/meng /usr/zhang
Процесс выполнения такой же, как и предыдущий метод, но преимущество этого метода в том, что он может иметь параметры после имени сценария, тем самым передавая значения параметров командам в программе, чтобы сценарий Shell мог обрабатывать несколько ситуаций, как функция. При вызове соответствующие фактические параметры могут передаваться в соответствии с конкретной проблемой.
Если вы начнете с текущей оболочки (начиная с
·означает) для выполнения сценария Shell вы можете использовать следующую простую форму:
$ · ex3 [параметр]
Установите разрешения для сценария оболочки на исполняемый файл, а затем выполните его непосредственно в командной строке.
Конкретные методы:
$ chmod a+x ex4$ ./ex4
Это требование указывает конкретную оболочку, которая выполняет сценарий в начале сценария оболочки, например
/бин/баш:
#!/бин/баш
Shell получает введенную пользователем команду (имя сценария) и анализирует ее. Если файл помечен как исполняемый, но не является скомпилированной программой, оболочка считает его сценарием оболочки. Оболочка прочитает содержимое, интерпретирует его и выполнит. Таким образом, с точки зрения пользователя выполнение сценария оболочки похоже на выполнение обычного исполняемого файла.
Таким образом, разработанные пользователем сценарии оболочки могут находиться в каталоге пути поиска команд (обычно
/бин,
/usr/бени т. д.), используйте его как обычную команду. Таким образом, вы разрабатываете свои собственные новые команды. Этот метод более удобен, если вы планируете неоднократно использовать подготовленный сценарий оболочки.
Вы можете присвоить результат выполнения команды переменной. Существует две формы подстановки команд: первая заключается в использовании обратных кавычек для цитирования команды, ее общая форма такова:
список команд.
Например: сохраните полный путь текущего рабочего каталога в переменной dir и введите следующую командную строку:
$ dir=`pwd`
Другая форма:
$(список команд). Приведенную выше командную строку также можно переписать так:
$каталог=$(пароль)
БашПредоставляются только одномерные массивы, размер массива не ограничен. Как и в языке C, индексы элементов массива нумеруются, начиная с 0. Чтобы получить элементы массива, используйте индексы. Индекс может быть целым числом или арифметическим выражением, его значение должно быть больше или равно 0. Пользователи могут использовать операторы присваивания для присвоения значений переменным массива.
Общая форма присвоения значений элементам массива такова:
Имя массива [нижний индекс] = значение,Например:
$ city[0]=Пекин$ city[1]=Шанхай$ city[2]=Тяньцзинь
Также можно использовать
объявитьКоманда явно объявляет массив, общий вид:
$объявление - имя массива
Общий формат чтения значений элементов массива:
${имя массива[нижний индекс]},Например:
$ echo ${city[0]}Пекин
Каждому элементу массива можно присваивать элемент за элементом, используя описанный выше метод, или его можно присваивать в комбинации. Общая форма определения массива и присвоения ему начального значения:
Имя массива = (значение 1, значение 2 ... значение n)
Каждое значение разделяется пробелами. Например:
$ A=(это пример сценария оболочки)$ echo ${A[0]} ${A[2]} ${A[3]} ${A[6]}это пример сценария$ echo ${ А[8]}
Поскольку в таблице значений 7 начальных значений, то
АКоличество элементов также равно 7.
А[8]Превышает назначенный массив
Адиапазон, он считается новым элементом. Поскольку заранее не присвоено значение, его значение представляет собой пустую строку.
Если индекс элемента массива не указан, имя массива представляет элемент массива с индексом 0, например:
городэквивалентно
город[0].
использовать
*или
@При индексации все элементы массива будут заменены.
$ echo ${A[*]}это пример сценария оболочки
$ эхо ${#A[*]}7
Если вы хотите написать оболочку для поиска суммы двух чисел, как вы можете это реализовать? Чтобы представить использование передачи параметров, напишите такой скрипт:
$ cat > сумма адлета = $1+$2echo $sum
После сохранения выполните:
$ chmod a+x ./add$ ./add 5 1015
Видно, что 5 и 10 передаются в
1 доллари
2 доллара, это собственный предустановленный порядок параметров оболочки. Фактически, вы также можете сначала определить переменные, а затем передать их.
Например, измените приведенный выше сценарий, чтобы получить:
пусть sum=$X+$Yecho $sum
Выполните еще раз:
$ X=5 Y=10 ./add15
Можно обнаружить, что и правильные результаты также могут быть получены.
экспортируйте переменную среды:
$ экспорт opid=True
Вот и все. Если вы хотите, чтобы оно вступило в силу после входа в систему, вы можете добавить его непосредственно в.
/etc/профильили
~/.bashrcВнутри.
может пройти
читатьНапример, чтобы прочитать значение переменной и дождаться, пока пользователь введет значение и отобразит его:
$ read -p Введите значение: input ; echo Вы ввели значение: $input Введите значение: 21500 Вы ввели значение: 21500
Некоторые важные переменные оболочки не следует изменять после присвоения, поэтому вы можете установить для них значение
только для чтения:
$ oracle_home=/usr/oracle7/bin$ только для чтения oracle_home
грамматика:
тестовое выражениеВозвращает true, если выражение истинно, в противном случае возвращает false.
Во-первых, даны общие символы сравнения, используемые при числовых сравнениях:
-eg =; -ne !=; -ge >=; -lt <; -le <=
$ тест вар1 -gt вар2
Доступен ли файл для чтения, записи и выполнения, зависит от того, является ли это обычным файлом и каталогом:
-р; -х; -ф;
$ test -r имя файла
Длина строки равна нулю:
-зненулевое:-н,нравиться:
$ тест -z s1
если строка
с1Длина равна нулю и возвращает true.
равный
с1=с2; не равнос1!=с2
Есть еще один способ сравнения строк (можно сравнивать их в лексикографическом порядке):
$ if [[ 'abcde' < 'abcdf' ]]; then echo да, как и ожидалось, да, как и ожидалось, да;
Операции, которые можно выполнить с помощью этой команды:
Арифметические операции:
+ - * / %;Логическая операция:= ! < <= > >=
нравиться:
$ i=5;выражение $i+5
кроме того,
до нашей эры— калькулятор командной строки, который может выполнять некоторые арифметические вычисления.
еслиПример команды: Если первым параметром является общее имя файла, распечатайте файл по страницам; в противном случае, если это имя каталога, введите каталог и распечатайте все файлы в каталоге. Если это не каталог, введите запрос. соответствующая информация.
if test -f $1then pr $1>/dev/lp0elif test-d $1then (cd $1;pr *>/dev/lp0)иначе echo $1 не является ни файлом, ни каталогомfi
случайКоманда представляет собой многоходовую команду ветвления, основанную на сопоставлении с образцом. Ниже будет определено, какой набор команд будет выполнен следующим на основе ввода пользователя с клавиатуры.
while [ $reply!=y ] && [ $reply!=Y ] #Оператор цикла, который мы изучим ниже, do echo nВы хотите продолжить?(Y/N)c read Answer #Прочитайте регистр клавиатуры $replay in ( y|Y)break;; #Выход из цикла (n|N) echo nnЗавершениеn выход 0;; *) echo nnПожалуйста, ответьте y или n continue #Вернитесь непосредственно во внутренний цикл и начните; продолжить эскадон
грамматика:
список команд while/until 1do, список команд 2done
Разница в том, что после того, как первый выполняет таблицу команд 1, если статус выхода равен нулю, выполняется
делатьСледующий список команд 2 затем вернется в исходную точку, и после того, как последний выполнит список команд 1, он будет выполнять аналогичные операции только в том случае, если статус выхода не равен нулю. Тот же пример, что и выше.
грамматика:
для имени переменной в таблице строк выполните таблицу команд выполнено
Пример:
FILE=test1.c myfile1.f pccn.hfor i в $FILEdo cd ./tmp cp $i $i.old echo $idone скопировано
Теперь давайте посмотрим на использование функций в Shell. Сначала рассмотрим пример: напишите функцию, а затем вызовите ее для отображения.
Привет, мир!
$ cat > show# Функция определения функции show{ echo $1$2;}H=Hello,W=World!# Вызовите функцию и передайте два параметра H и Wshow $H $W
Демо:
$ chmod 770 show$./showHello,World!
Вы видели что-то подозрительное?
$ показать $H $W
Мы можем напрямую следовать за именем функции с фактическими параметрами.
Порядок фактических параметров соответствует «виртуальным параметрам».
1 доллар, 2 доллара, 3 доллара…
Примечание. Если вы хотите передать параметр, что делать, если в середине параметра есть пробелы? Сначала попробуйте.
отображать
Привет, мир(Между двумя словами стоит пробел)
функция show{ echo $1}HW=Hello Worldshow $HW
Если напрямую
показать $HW, определенно невозможно, потому что
1 долларТолько получил
Привет, поэтому результаты показывают только
Привет, причина в том, что необходимо использовать строковые переменные Сдержи это.
Если вам интересно, продолжайте учиться!
Вас ждет много мощных вещей, таких как
резать,
выражение,
СЭД,
оки т. д.