如何在 shell 脚本中使用 -ne 标志来表示 echo?

如何在 shell 脚本中使用 -ne 标志来表示 echo?

我正在尝试创建一个 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

这就是echoin/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"

相关内容