Ваше выходное устройство, которое вы подключили через HDMI, нуждаются в паре секунд, чтобы синхронизировать на DataStream, он начинает получать от вашей системы. Сначала вы можете посмотреть добавлять пару секунд тишины или постоянно воспроизводить тишину во время вашего приложения, чтобы сохранить синхронизацию, а затем смешивание в выходе TTS, когда это необходимо.
Редактировать: кажется, связанным с этим вопросом, предложения могут также помочь: Assubuntu.com
Намного простые это можно сделать с SED
#!/bin/bash
unset pattern
for fn in *
do
pattern=${pattern:+${pattern}\\|}$f
done
sed -i "/$pattern/s/$/ Found/" some.txt
Код очень запутанный. Например
>> list=$(ls -l | awk 'NR > 1 { print $9;}')
>> for fn in $list
Почему вы делаете ls -l
, а затем извлекаете $9
(имя файла - но обратите внимание, что это работает только в том случае, если в имени файла нет пробела); вместо простого
for fn in *
Затем вы делаете несколько grep
для номеров строк и awk
для извлечения поля
>> n=`grep -n "$fn" some.txt | awk -F":" '{ print $1;}'`
, но почему бы просто не позволить awk
сделать совпадение
n=$( awk -v fn="$fn" '$0 ~ fn { print NR }' some.txt )
И наконец, вместо того, чтобы переключаться вперед и назад между оболочкой и awk, процитировав
>> awk -F" " 'NR=='"$n"'{OFS=" "; $(NF+1)="Found";}1' some.txt>some.out
, передайте переменную чисто как параметр, как в
awk -v n="$n" 'NR==n { $(NF+1)="Found" } 1'
Теперь сложив эти части вместе:
for fn in *
do
n=$( awk -v fn="$fn" '$0 ~ fn { print NR }' some.txt )
awk -v n="$n" 'NR==n { $(NF+1)="Found" } 1' some.txt >some.out
mv some.out some.txt
done
Не совсем уверен, что это именно то, что вы хотите, но это более понятный код, и он должен иметь, по крайней мере, меньшие проблемы.
Теперь, похоже, с такой реструктуризацией все это можно сделать и в одном экземпляре awk
. (Но я оставляю это как упражнение для читателя.)
Проблемы в вашем скрипте:
SC1035 - Вы отсутствуете необходимое пространство после!
1! / Bin / bash
^ - SC1035 Вы отсутствуете необходимое пространство после!
2 list = $ (ls -l | awk 'nr> 1 {print $ 9;}')
^ - SC2012 Используйте находку вместо ls, чтобы лучше обрабатывать не буквенно-цифровые имена файлов.
3 для FN в листе $
4 сделать
5.
6 n = `grep -n" $ fn "uver.txt | awk -f ":" '{print $ 1;}' `
^ - SC2006 Используйте $ (..) вместо наследия `..` ..`
7 awk -f "" nr == '"$ n"' {ofs = ""; $ (NF + 1) = «найдено»;} 1 'uver.txt>
8 мВ какой-то некоторые.txt
9 сделано
!/bin/bash
list=$(ls -l | awk 'NR > 1 { print $9;}')
for fn in list
do
echo $fn
n=`grep -n "$fn" some.txt | awk -F":" '{ print $1;}'` # change this
awk -F" " 'NR=='"$n"'{OFS=" "; $(NF+1)="Found";}1' some.txt>some.out
mv some.out some.txt
done
!/bin/bash
list=$(ls -l | awk 'NR > 1 { print $9;}')
for fn in list; do # also decided to clean this up
echo $fn
n=$(grep -n "$fn" some.txt | awk -F":" '{ print $1;}') # to this
awk -F" " 'NR=='"$n"'{OFS=" "; $(NF+1)="Found";}1' some.txt>some.out # also, what is this line supposed to do? There is usually a better way to do something that have to run a mv command to overwrite
mv some.out some.txt
done
Там может быть что-то еще, но у меня еще не было моего кофе.
http://tldp.org/ldp/bash-beginners-guide/html/sect_03_04.html