Automator bash unix script, читает входные файлы для перемещения, если один файл, или определяет наличие нескольких архивов, а затем перемещает архив - PullRequest
0 голосов
/ 30 апреля 2011

У меня есть капля, созданная с помощью автоматизатора, который перемещает файлы, когда я перетаскиваю их на значок приложения в определенную папку.

Теперь скрипт выглядит так:

for f in "$@"
do
    cp "$f" "volumes/testdrive/testfolder/$(basename "$f")" 
done

Мне было интересно,можно сделать команду, чтобы определить, было ли введено несколько файлов в скрипт, а затем заархивировать их с помощью функции zip и переместить в одну и ту же папку, а если один файл был отброшен, сделать обычную копию файла в указанную папку.

Ответы [ 2 ]

2 голосов
/ 28 июня 2011

Используйте условное выражение, что-то вроде (синтаксис может быть отключен):

if [ $# > 1 ]
 then zip $@ > /path/to/location/foo.zip  # this line might need to be researched
 else cp $@ /path/to/location/`basename $@`
fi

Вы не захотите делать это с циклом for, потому что тогда он пройдет через сложную процедуру созданияпочтовый архив для каждого файла в выборе.Если то, что вы делали, двигало каждую из них, то, конечно, используйте цикл, но вы просто берете их все и архивируете их

0 голосов
/ 30 апреля 2011

$# содержит количество аргументов, переданных скрипту.

...