Essa seria a diferença entre echo in /bin/sh vs. seu shell interativo. Sugiro usar printf e ver O UNIX e o echo .
Estou tentando criar um script de shell para usar um argumento e usá-lo para nomear uma guia de terminal. Portanto, se o nome do script for tabnm, tabnm "test" deve renomear a guia atual "test"
Este é o meu código:
#!/bin/sh
echo -ne "\e]1;$1\a"
mas quando eu executo eu recebo esta saída:
teste robin @ icarus $ sh tabnm.sh
-ne \ e] 1; teste
Se eu apenas executar echo -ne "\ e] 1; Test \ a" direto no shell, a guia será renomeada.
Essa seria a diferença entre echo in /bin/sh vs. seu shell interativo. Sugiro usar printf e ver O UNIX e o echo .
O problema é que o seu shell reconhece diferentes códigos de escape do que o seu /bin/sh .
/bin/sh provavelmente não reconhece \e como o caractere de escape. Experimente 3 .
Você também pode substituir \a pelo código equivalente %code%7 e ver se isso funciona.
Se você quer codificar para bash, você deve dizer em sua linha de shebang:
#!/bin/bash
echo -ne "\e]1;$1\a"