моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
$
$()
ПрименениеСпециальные переменные оболочки, используемые в скриптах и функциях для передачи параметров.
Существуют следующие специальные переменные позиционных параметров:
переменная | эффект |
---|---|
$0 | Получите имя файла сценария оболочки и путь к нему. |
$n | Получите n-й параметр сценария оболочки. n находится в диапазоне от 1 до 9. Если оно больше 9, некоторые из них.{} ,нравиться{$10} |
$# | Получите общее количество параметров выполненного сценария оболочки. |
$* | Получить все параметры сценария оболочки без кавычек, это эквивалентно$@ Функция плюс кавычки «$*» равнаПолучает все параметры в виде одной строки |
$@ | Без кавычек эффект тот же, что и выше. С кавычками — тот же.Получите все параметры как независимые строки |
Метод поиска:man bash
,поискSpecial Parameters
переменная | эффект |
---|---|
$? | Возвращаемое значение статуса выполнения последней команды: 0 — правильно, значение, отличное от 0, — неудачно. |
$$ | Номер процесса текущего сценария оболочки |
$! | PID последнего фонового процесса |
$_ | Получить последний параметр последней команды |
-n
: Вывод содержимого без разрывов строк.-e
: Интерпретация escape-символов. n
: новая линияr
: Входитьt
:вкладкаb
:backspacev
: вертикальный символ табуляции.eval ls; cd ~
exec
После выполнения автоматическиexit
грамматика:
грамматика | эффект |
---|---|
# | Удалить самое короткое совпадение с начала |
## | Удалить самое длинное совпадение с начала |
% | Удалить самое короткое совпадение с конца |
%% | Удалить самую длинную спичку с конца |
# | Перехват указанного символьного содержимого |
a*c | Соответствует строке, начинающейся с любого количества символов в середине и заканчивающейся буквой c. |
${变量} | Возвращаемое значение переменной |
${#变量} | Возвращаемая переменная длина, длина символа |
${变量:start} | Возвращает символ после значения смещения переменной |
${变量:start:length} | Извлечение символов, ограниченных длиной после смещения |
${变量#word} | С начала переменной удалите самую короткую подстроку совпадающего слова. |
${变量##word} | С начала переменной удалите самое длинное подходящее слово. |
${变量%word} | Удалите самую короткую подстроку совпадающего слова из конца переменной. |
${变量%%word} | Удалите самую длинную подстроку совпадающего слова из конца переменной. |
${变量/pattern/string} | Замените первый соответствующий шаблон строкой |
${变量//pattern/string} | Заменить все шаблоны строкой |
Пример операции: Удалить имя файла
# 通过⼦串的替换⽅式
snowk@SnowKYP# f=stu_102999_1_finished.jpg
# 变量的⼦串功能,去掉后缀
snowk@SnowKYP# echo ${f//_finished/}
stu_102999_1.jpg
# 利⽤变量的反引⽤替换⽂件名
snowk@SnowKYP# mv $f `echo ${f//_finished/}`
# 剩下的⽂件,利⽤循环操作
# 找出剩下所有需要替换的jpg⽂件
snowk@SnowKYP# ls *fin*.jpg
stu_102999_2_finished.jpg stu_102999_3_finished.jpg stu_102999_4_finished.jpg
stu_102999_5_finished.jpg
# 写shell循环代码,循环操作
# 去掉所有jpg⽂件的_finished后缀
snowk@SnowKYP# for file in `ls *fin*.jpg`;do mv $file `echo ${file//_finished/}`;done
snowk@SnowKYP# ls *.jpg
stu_102999_1.jpg stu_102999_2.jpg stu_102999_3.jpg stu_102999_4.jpg stu_102999_5.jpg
parameter,参数,范围
${parameter:-word}
:еслиparameter
Значение переменной пусто, вернитеword
нить${parameter:=word}
:еслиparameter
Значение переменной пусто, тогдаword
Заменяет значение переменной и возвращает ее значение${parameter:?word}
:еслиparameter
Значение переменной пусто,word
какstderr
Выход, в противном случае значение выходной переменной ${parameter:+word}
:еслиparameter
Если значение переменной пусто, ничего не делайте, иначеword
возвращаться# 原脚本命令,有bug,有歧义
find ${file_path} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f
# 修正后的脚本命令
# 如果有bug起义,就在当前目录搜索并执行删除
find ${file_path:=/tmp} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f