Что означает переменная $ {i%. *} В терминале? - PullRequest
1 голос
/ 17 марта 2020

Эта команда оболочки преобразует все .avi в .mp4 согласно этому ответу от @ llogan

Может кто-нибудь объяснить, как работает $ {i%. *} ? В частности, что делает%?

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

1 Ответ

2 голосов
/ 17 марта 2020

С BashGuide / Параметры / Расширение параметров :

${parameter%pattern}
pattern сопоставляется с концом parameter. В результате получается расширенное значение parameter с удалением кратчайшего соответствия.

С Как выполнять манипуляции со строками в bash? :

% означает «удалить кратчайшее возможное совпадение из конца содержимого переменной»

Другими словами, если расширенное значение parameter (i в вашем случае ) равен myvideo.avi, тогда %.* приведет к myvideo. Это так, чтобы выходной файл не заканчивался именем myvideo.avi.mp4, а вместо этого именовался myvideo.mp4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...