Para obter argumentos do comando mogrify
e fazer outras ações com base em seu conteúdo, você pode "substituir" o programa com uma função própria e, em seguida, passar os argumentos originais para a função:
mymog(){
[[ $1 == "-path" ]] && [[ ! -d $2 ]] && mkdir "$2"
mogrify "$@"
}
Para usá-lo, basta substituir mymog
onde quer que você usaria mogrify
:
mymog -path bar -negate foo/*.png
A função testa para ver se o primeiro argumento é -path
. Em caso afirmativo, ele continuará testando se o segundo argumento não é um diretório existente. Se não for, então cria esse diretório. (O [[ ]] &&
é apenas outra maneira de escrever instruções if-then.) Em qualquer um dos casos , ele passa todos os argumentos para o comando mogrify
.
O único aviso é que você tem que colocar o argumento -path
primeiro - você não pode colocá-lo em outro lugar na linha. Você deve poder usar isso onde quer que você usaria normalmente mogrify
e ele apenas ignorará a mkdir
part se não houver nenhuma definição -path
.
Para que isso esteja disponível no seu uso diário, adicione essas quatro linhas ao arquivo .bash_profile
ou .bashrc
, dependendo do sistema operacional.
EDIT # 2: Nova resposta sem dependência da posição de -path
function mogmod(){
args=("$@")
for ((i=0; i < $#; i++)) {
if [[ ${args[$i]} = "-path" ]]
then
mypath=${args[((i+1))]}
[[ ! -d "$mypath" ]] && mkdir "$mypath"
fi
}
mogrify "$@"
}