Em primeiro lugar, é uma boa ideia analisar a saída de ls
ao procurar nomes de arquivos. Isso vai quebrar em qualquer caractere estranho, incluindo um espaço simples. A melhor maneira de contornar isso é usar globalização de concha ou find
.
Sua próxima edição é que você não está citando as variáveis, o que significa que os caracteres especiais são expandidos antes que o comando mv
seja executado. Um exemplo prático do seu script seria:
#!/usr/bin/env bash
if find "$1" -print0 | grep -z "$2" >/dev/null
then
echo "file has Symbol"
else
echo "The symbol was added to directory"
echo mv "$1" "$1$2"
fi
AVISO : não tenho ideia de por que você gostaria de fazer isso. Seria. por exemplo, tente mover um diretório para um subdiretório dele mesmo e isso falhará. Eu suspeito de um problema XY aqui e sugiro que você edite sua pergunta para explicar o que você está realmente tentando fazer.