2016-02-05 5 views
0

Вот мой сценарий оболочки Я добавил в рабочий процесс Automatorпартия UnRAR на OS X

export [email protected] 
export DIR=${VAR%/*} 
/usr/local/bin/unrar x -y "${VAR}" "${DIR}" 

Input является файлы и папки в Finder.app. Я хотел бы иметь возможность расширять это и иметь возможность делать вариации этого. Один из них - извлечь в подпапку в $ DIR, названный именем архива (без расширения).

Мой мастер-план должен иметь сценарий оболочки использовать UNRAR команду -экстракта в .iso в архивах -mount в .iso -CoPY содержимое смонтированный .iso до $ DIR - (hdiutil извлечь?) в .iso -удалено $ Var (архивах)

Я новичок в языке оболочки, и я не понимаю, фигурные скобки и т.д.

+0

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

ответ

0

Я думаю, что вы можете ittarate по всем аргументы, которые вы проверяете, если они находятся в папках/файлах, а затем извлекать каждый соответствующий rar в его папку (после ее создания)

Я хотел бы сделать это следующим образом (если вы используете Баш оболочки):

arguments="[email protected]" 

for i in `echo $arguments` #going over the arguments 
do 
    if [ -d "$i" ]; then #checks if its a directory 
     folder=`echo $i | sed 's/\/$//'` #to verify that dir's name is not ending with "/" 
     archives=`ls "$folder/*.rar"` 

     for archive in `echo $archives` #will work also if the folder contains only one rar 
     do 
     final_dir="${folder}/${archive%.rar}" 
     mkdir $final_dir 
     /usr/local/bin/unrar x -y $archive $final_dir 
     done 

    elif [ -f "$i" ]; then # checks if it's a regular file 
     final_dir="${folder}/${archive%.rar}" 
     mkdir $final_dir 
     /usr/local/bin/unrar x -y $archive $final_di 
    else #error for if the argument is not a dir nor a regular file 
     echo "$i is an invaild argument" 
    fi 

done