Сценарий Bash в сценарии Perl зависает

авк

Это работает с GNU awk (Linux )и BSD awk (Mac ).

Вы можете игнорировать пустые строки. В этом случае вы можете использовать awk 'NF' file.txt, а затем направить вывод с помощью одного из других методов, описанных на этой странице.

Вы также можете сделать все это за один проход через awk:

awk 'NF { a=b ; b=$0 } END { print a }' file.txt
  • NF
    Обрабатывать только те строки, которые содержат данные. NF— количество полей в строке; значения больше 0 рассматриваются как «истинные».
    • { a=b ; b=$0 }
      Сохранить текущую не-пустую строку как b, а предыдущую не-пустую строку как a.
  • END { print a }
    После проверки всего файла выведите окончательное значениеa(предпоследней не-пустой строки ).

Если вы не хотите пропускать пустые строки, просто удалитеNF:

awk '{ a=b ; b=$0 } END { print a }' file.txt
0
12.02.2020, 10:16
2 ответа

Удостоверьтесь, что сценарий bash имеет шебанг #!/bin/bash вверху, а затем добавьте выход 0 в самый конец вашего сценария, чтобы другая программа знала, что она завершилась успешно.

#!/bin/bash
for f in *.flac
do
    /usr/local/bin/ffmpeg -i "$f" -aq 1 "${f%flac}mp3"
done
exit 0

Давай попробуем по-другому

#!/bin/bash
find -name "*.cfg" -type f -exec /usr/local/bin/ffmpeg -i "$f" -aq 1 "${f%flac}mp3" {} \;
done
exit 0
0
28.04.2021, 23:23

РЕШЕНО!! Я изменил цитирование в скрипте Perl:

@sysCmd=(`/usr/local/bin/ffmpeg`, '-', "$t", ' -aq 1', '${t%flac}mp3');
system (@sysCmd);

Теперь я могу работать над остальной частью Perl-скрипта. Большое спасибо всем, кто внес свои идеи.

-1
28.04.2021, 23:23

Теги

Похожие вопросы