O que o @ Slug45 disse está completamente correto. No entanto, falta uma explicação.
Quando você arrasta e solta um arquivo em um arquivo executável (ou um link para um), esse executável é executado com o caminho para o arquivo arrastado como um argumento. Isso é exatamente o mesmo no Windows (não que isso realmente importe aqui).
O Bash tem uma maneira simples de lidar com argumentos. Use "$@"
(com as aspas) para obter uma matriz de todos os argumentos (útil, por exemplo, em um loop for..in). $@
, "$*"
e $*
fazem coisas semelhantes, mas você quase sempre deseja "$@"
. Consulte aqui para obter mais informações sobre os detalhes.
Além disso, você pode acessar diretamente argumentos específicos como $X
, em que X é o número arg. Por exemplo:
$ cat ./args.sh
echo
echo
echo
$ ./args.sh foo bar baz
foo
bar
baz
$
Em scripts grandes, é melhor atribuí-los a variáveis nomeadas:
$ cat music.sh
#!/bin/bash
# Usage: ./music.sh Artist Album Song
ARTIST=
ALBUM=
SONG=
if [ $ARTIST -eq "Nickelback" ]; then exit; fi
mplayer ~/Music/$ARTIST/$ALBUM/$SONG.mp3