Na string:
rtsp://user:[email protected]:5554/my-media/media.amp?videocodec=h264
você tem ?
nessa string, então o shell executará expansão do nome do caminho nessa string, usando as regras de correspondência de padrões .
Em bash
, se failglob
opções não foram definidas, o que é padrão, o padrão com falha será deixado como está:
$ echo does-not-exist?
does-not-exist?
Embora zsh
não informe nenhum erro de correspondência de padrão com nomatch
conjunto de opções, que é o padrão:
$ echo does-not-exist?
zsh: no matches found: does-not-exist?
Você pode fazer com que zsh
suprima o erro e imprima o padrão:
$ setopt nonomatch
$ echo does-not-exist?
does-not-exist?
Você pode fazer com que bash
se comporte como zsh
com nomatch
conjunto de opções, ativando failglob
:
$ shopt -s failglob
$ echo does-not-exist?
bash: no match: does-not-exist?
Mais genericamente, você pode desativar a geração de nome de arquivo do shell:
$ set -f
$ : "The command"
$ set +f
(ou set -o noglob
, set +o noglob
)
ou usando um dos métodos citando do shell para fazer com que o shell trate ?
e outro padrão combinando caracteres especiais literalmente.
zsh
também fornece o noglob
builtin, que desativa a geração de nome de arquivo em qualquer palavra para o seguinte comando simples:
$ noglob echo *
*