![如何在 shell 脚本中使用 -ne 标志来表示 echo?](https://linux22.com/image/1708185/%E5%A6%82%E4%BD%95%E5%9C%A8%20shell%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E4%BD%BF%E7%94%A8%20-ne%20%E6%A0%87%E5%BF%97%E6%9D%A5%E8%A1%A8%E7%A4%BA%20echo%EF%BC%9F.png)
我正在尝试创建一个 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"