How do I use the -ne flag for echo in a shell script?
I'm trying to create a shell script to take an argument and use it to name a terminal tab. So if the script's name is tabnm, tabnm "test" should rename the current tab "test"
This is my code:
#!/bin/sh
echo -ne "\e]1;$1\a"but when i run it I get this output:
robin@icarus $ sh tabnm.sh test
-ne \e]1;test
If I just run echo -ne "\e]1;Test\a" straight in the shell, the tab is renamed.
13 Answers
That would be the difference between echo in /bin/sh vs. your interactive shell. I suggest using printf instead, and see The UNIX and the echo.
The problem is that your shell recognizes different escape codes than your /bin/sh.
/bin/sh probably doesn't recognize \e as the escape character. Try \033 instead.
You can also replace \a by the equivalent code\007 and see if that works.
If you want to code for bash, you should say so in your shebang line:
#!/bin/bash
echo -ne "\e]1;$1\a"