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