Что означает этот синтаксис "$ {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

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

  • Поплавковые операции с bc неточны?
  • rsync с использованием функции args
  • операция оболочки внутри makefile
  • Как я могу управлять существующей удаленной оболочкой?
  • Замена переменной подстановки Shell
  • Почему моя конкатенация переменных оболочки не работает на ubuntu bash?
  • Перенаправить все стандартные для остальной части скрипта
  • Определить текущее имя оболочки
  • Эволюция оболочки
  • Можно ли труба stderr при сохранении stdout?
  • Мониторинг серверов
  • Linux и Unix - лучшая ОС в мире.