我正在尝试创建一个 shell 脚本来接受一个参数并使用它来命名终端选项卡。因此,如果脚本的名称是 tabnm,则 tabnm“test”应该将当前选项卡重命名为“test”
这是我的代码:
#!/bin/sh
echo -ne "\e]1;$1\a"
但是当我运行它时我得到了这个输出:
robin@icarus $ sh tabnm.sh test
-ne \e]1;test
如果我直接echo -ne "\e]1;Test\a"
在 shell 中运行,该选项卡就会被重命名。
答案1
这就是echo
in/bin/sh
和交互式 shell 之间的区别。我建议改用printf
,然后看看UNIX 和echo
。
答案2
问题在于你的 shell 识别的转义代码与你的不同/bin/sh
。
/bin/sh
可能未识别\e
为转义字符。请尝试\033
一下。
您也可以\a
用等效代码替换\007
,看看是否有效。
答案3
如果你想要为 bash 编写代码,那么你应该在 shebang 行中这样说:
#!/bin/bash
echo -ne "\e]1;$1\a"