2009-11-04 3 views
1

Я пишу скрипт для отслеживания недостающих кадров в рендере (тысячи файлов изображений). найти пронумерованные кадры в последовательности я это сделать:проблема с applescript + shell script

set thecontents to every paragraph of (do shell script 
"while IFS= read -r -d '' file; 
do echo \"$file\"|sed -E \"s|.*[^[:digit:]]0*([[:digit:]]+)\\..*|\\1|\" ; 
done< <(find \"" & thefolderPPath & "\" -name \"*.*\" -print0)") 

находка находит все файлы, и СЭД полос все, кроме числа завершающего от них - это соответствует числу, когда файл пронумерован как foo_001.bar (или даже если они foo3_001.bar), он ищет не цифру, а затем цифру, за которой следует расширение точки, и отбрасывает все, кроме цифр.

Она работает в оболочке, если я запускаю его, как это (без побегов)

while IFS= read -r -d '' file 
do echo "$file"|sed -E "s:.*[^[:digit:]]0*([[:digit:]]+)\..*:\1:" 
done < <(find "/Volumes/foo/imagesequence/" -name "*.*" -print0) 

производит хороший список номеров, но в Applescript я получаю

«ш: -c: строка 0: ошибка синтаксиса около неожиданного маркера `< '

любых идей, которые я могу реализовать его с помощью AppleScript, разбив СЭД функцию и функцию поиска в отдельные сценарии оболочки, но это медленнее.

ответ

2

Похоже, что вы используете bash процесс замещения здесь:

<(find "/Volumes/foo/imagesequence/" -name "*.*" -print0) 

Команда AppleScript do shell script всегда использует /bin/sh (Posix семантику оболочки) и подмена процесс не поддерживается в Posix /bin/sh. Либо перепишите сценарий, чтобы избежать Bash -измерений, либо следуйте советам here о том, как запустить скрипт оболочки AppleScript с другой оболочкой.

+0

Ну, кто бы это сделал? Благодарю. – stib

Смежные вопросы