Como eu uso o sinalizador -ne para o echo em um script de shell?

5

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.

    
por robin smith 21.06.2011 / 18:38

3 respostas

4

Essa seria a diferença entre echo in /bin/sh vs. seu shell interativo. Sugiro usar printf e ver O UNIX e o echo .

    
por 21.06.2011 / 18:44
1

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.

    
por 21.06.2011 / 18:49
0

Se você quer codificar para bash, você deve dizer em sua linha de shebang:

#!/bin/bash
echo -ne "\e]1;$1\a"
    
por 04.05.2017 / 20:33