Eu também recomendo que você use o delimitador de nome de variável. Portanto, o código ficaria assim:
#!/bin/sh
# $0 is the script name, $1 id the first ARG, $2 is second...
NAME="$1"
mxmlc ${NAME}.as
flashplayerdebugger ${NAME}.sw
Isso permite o uso da variável em qualquer contexto, mesmo dentro de outro texto. Por exemplo:
NewName="myFileIs${NAME}and that is all"
Isso expandiria a variável NAME, que seria flanqueada na frente por "myFileIs" e na parte traseira com "e isso é tudo". A variável expandiria, incluindo espaços, dentro da cadeia. se NAME estivesse "aqui dentro", o NewName seria "myFileIsinside hereand that is all".
A linha de comando pode levar até 9 variáveis. Eles podem ser strings entre aspas que contêm espaços em branco, cada string entre aspas conta como uma variável. Tal como:
./myProg var1 var 2 var3
Então ${1}é "var1", ${2}é "var", ${3}é "2", ${4}é"var3"
MAS:
./myProg var1 "var 2" var3
tem ${1}é "var1", ${2}é "var 2", ${3}é"var3"
Diverta-se!
$2é o primeiro argumento,$3o segundo e assim por diante.$1está reservado para o nome do arquivo. Quanto às outras coisas, não entendo bem o que você quer dizer. Você poderia tentar explicar um pouco melhor ou escrever algum código psued?