Как насчет
for filepath in "$1/"*.flac
do
ffmpeg -i "${file_path}" -f ...
где
«$ 1 /» *. FLAC
Будет ли суффикс Garantee .FLAC в конце «$ {File_Path}»
BN = $ (BaseName "$ {file_path}")
BNNF = $ (BaseName » $ {file_path} ".flac)
образец
A > ls -l Music
total 0
-rw-rw-r-- 1 Arc Arc 0 Mar 14 03:37 foo bar
-rw-rw-r-- 1 Arc Arc 0 Mar 14 03:37 foo bar.flac
-rw-rw-r-- 1 Arc Arc 0 Mar 14 03:37 fubar
-rw-rw-r-- 1 Arc Arc 0 Mar 14 03:37 fubar.flac
Теперь запустить:
A > for f in Music/*.flac; do echo $f; ls -l "$f" ; done
Music/foo bar.flac
-rw-rw-r-- 1 Arc Arc 0 Mar 14 03:37 Music/foo bar.flac
Music/fubar.flac
-rw-rw-r-- 1 Arc Arc 0 Mar 14 03:37 Music/fubar.flac
В вашей программе есть 2 ошибки. Последняя строка недопустима:
ConnectToClient.expect(command, prompt)
недействительна, так как expect принимает в качестве второго аргумента номер тайм-аута, а не строку.
Другая проблема заключается в том, что в вызове:
ConnectToClient.expect(prompt)
приглашение
должно быть регулярным выражением (регулярное выражение). Вы предоставляете строку, которая будет скомпилирована в регулярное выражение. Однако в регулярном выражении символ [
является особенным, поэтому вам нужно его экранировать. Либо установите
prompt = r'\[root@user ~\]#'
, либо вместо использования .expect ()
используйте .expect_exact ()
, который хочет строк, а не регулярных выражений.
По умолчанию для pexpect windowsize установлено значение (24 строки и 80 столбцов) в моем случае, когда длина приглашения и команды превышает 80. Я столкнулся с этой проблемой. Изменив setwinsize (24,80) на setwinsize (24,150), он отлично работает.