Этот вопрос касается скрипта bash, который запускается в autotor osx. Я использую действия автомата, чтобы получить и отфильтровать кучу ссылок на файлы из искателя. Затем я добавляю к этому списку имя родительской папки, также с помощью действия автомата. Затем Automator передает эти аргументы действию, называемому «запустить сценарий оболочки». Я точно не знаю, как автомат вызывает скрипт, но список аргументов выглядит так, когда повторяется с помощью: echo "$@"
/Volumes/G-Raid/Online/WAV_TEST/Testbok 50/01/01000 43-001.wav /Volumes/G-Raid/Online/WAV_TEST/Testbok 50/02/02000 43-002.wav /Volumes/G-Raid /Online/WAV_TEST/Тестбокс 50/03/03000 43-003.wav /Volumes/G-Raid/Online/WAV_TEST/Тестбокс 50
В данном случае путь к 3 файлам и папке.
В сценарии оболочки я запускаю приложение под названием ripcheckc* с аргументами, переданными от автоматизатора, за вычетом последнего аргумента (папки) в списке.
Я использую это, чтобы удалить последний аргумент:
_args=( "$@" )
unset _args[${#_args[@]}-1]
А это echo $_args
:
/Volumes/G-Raid/Online/WAV_TEST/Testbok 50/01/01000 43-001.wav /Volumes/G-Raid/Online/WAV_TEST/Testbok 50/02/02000 43-002.wav /Volumes/G-Raid /Online/WAV_TEST/Тестбокс 03/50/03000 43-003.wav
То же, что и раньше, но без папки.
Теперь, если я запускаю ripcheckc с "$@"
в качестве аргумента, он работает (но позже происходит сбой из-за этого последнего пути в списке аргументов). Если я использую ${_args[@]}
, приложение просто прерывается. Когда я повторяю $@
и _args
, вывод выглядит одинаково, за исключением последнего аргумента.
Мой вопрос: в чем разница между $@ и $_args, которые делают первый допустимый ввод, а второй нет?
* Приложение ripcheckc
Надеюсь, мой вопрос имеет смысл.
РЕДАКТИРОВАТЬ: Решено.