Что означает этот синтаксис "$ {i% .avi} .mp4"

Возможный дубликат:
Как работают $ {0 ## *} и $ {0% / *}?

Я встречал этот тип синтаксиса где-то в Интернете:

for i in *.avi do ffmpeg -i "$i" "${i%.avi}.mp4" done 

как этот "${i%.avi}.mp4" и как я могу его использовать?

2 Solutions collect form web for “Что означает этот синтаксис "$ {i% .avi} .mp4"”

Это называется расширением параметра. Все справа от .avi удаляется, а .mp4 объединяется в результат.

Если $i является «foo.avi», результатом будет «foo.mp4». В BashFAQ 73 есть несколько хороших примеров других способов использования расширений параметров для обработки строк.

Он удалит суффикс .avi из $i (если он есть), а затем соедините результат с .mp4 .

Это называется расширением параметра.

Стандартные описаны здесь: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02

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

  • Запись и вывода и потока ошибок в один и тот же файл
  • Получить конкретный номер в строке
  • Как заставить ssh-add запрашивать парольную фразу при загрузке ключа RSA из FIFO?
  • Как проверить ОС и версию с помощью команды Linux
  • Объем экспортируемой переменной в оболочке
  • Заменить часть имени файла по имени каталога
  • Результат неожиданного условия в сценарии ksh
  • ksh, выполнить действие при достижении максимального значения цикла
  • Исходный (.) Контурный выход
  • Как эхо выражение с одинарными и двойными кавычками?
  • Когда вам нужно «nohup», если вы уже используете «&»?
  • Linux и Unix - лучшая ОС в мире.