Você não pode fazer isso de dentro do seu script. *
tem que ser escapado , caso contrário ele tentará encaixar nomes de arquivos (no seu caso x.
, então qualquer coisa, como *
é um operador glob que corresponde a qualquer string no nome do arquivo). Você pode fazer isso basicamente de três maneiras - coloque sua string entre aspas simples ou duplas:
./script.sh "x.*"
./script.sh 'x.*'
Ou prefixo de caractere problemático com barra invertida:
./script.sh x.\*
Como Jeff mencionou nos comentários (obrigado), você também pode desativar a expansão glob com:
set -o noglob
Você pode ativá-lo novamente com set +o noglob
, se quiser.