2013-09-30 1 views
3

enter image description hereПрисвоить действие на переменную в Automator для использования в Shell Script

Ok, эта вещь сводит меня с ума прямо сейчас. Итак, действие 1 выбирает папку (я хочу сохранить путь этой папки как var_1), а действие 3 выбирает файл (я хочу сохранить путь этого файла как var_2)

поэтому в конце. , ,

var_1 = '/Users/Prometheus/Desktop/' 
var_2 = '/Users/Prometheus/Documents/a.txt' 

Так как я использую эти переменные и их значения внутри Shell Script с питоном? я не могу использовать sys.argv, потому что они установлены на некоторые странные переменные

Я обычно ставлю «Спросите Finder Пункт»> Run Shell Script, а затем

import sys 

variable = open(argv[1]).read() 

, но я не могу использовать это в этом случае . мои скрипты в Python, так что я предпочел бы остаться в питона, потому что я не знаю, какой-либо другой язык

ответ

10

переменные Automator используются только в рабочий процесс Automator. Сама переменная напрямую не доступна ни для сценария оболочки, ни для скрипта Python. Действие Run Shell Script позволяет передавать значения конкретных переменных в сценарий оболочки любым из двух способов: либо передать их через stdin, либо передать их в качестве аргументов выполнения. Для такого рода прецедентов последнее проще. Для начала вам нужно выбрать имена переменных Automator в действиях Set Value of Variable и Get Value of Variable, чтобы выбранные значения можно было сохранить между действиями. Вот очень рудиментарный пример рабочего потока, в котором я выбрал две папки:

enter image description hereenter image description here

+0

вы не имеете ни малейшего представления о том, как много вы просто помогли мне спасибо так много. ваше объяснение было очень хорошим, теперь имеет смысл то, что происходило раньше! –

0

Вы могли бы использовать действие Run AppleScript, как для отображения диалоговых окон:

POSIX path of (choose folder default location (path to desktop)) 
result & linefeed & POSIX path of (choose file default location (path to desktop)) 

Затем установите " Проходят вход»к„стандартный ввод“в действии Run Shell Script и использовать скрипт так:

import sys 
folder, file = sys.stdin.read().splitlines() 
Смежные вопросы