5

Я пытаюсь создать сценарий оболочки, чтобы взять аргумент и использовать его для именования вкладки терминала. Поэтому, если имя скрипта равно tabnm, tabnm "test" должен переименовать текущую вкладку "test"

Это мой код:

#!/bin/sh
echo -ne "\e]1;$1\a"

но когда я запускаю его, я получаю этот вывод:

тест robin @ icarus $ sh tabnm.sh
-ne \e] 1; тест

Если я просто запускаю echo -ne "\e] 1; Test\a" прямо в оболочке, вкладка переименовывается.

3 ответа3

4

Это было бы различием между echo в /bin/sh и вашей интерактивной оболочкой. Я предлагаю вместо этого использовать printf и посмотреть UNIX и echo.

1

Проблема в том, что ваша оболочка распознает другие escape-коды, чем ваш /bin/sh .

/bin/sh вероятно, не распознает \e как escape-символ. Попробуйте \033 вместо этого.

Вы также можете заменить \a эквивалентным кодом \007 и посмотреть, работает ли он.

0

Если вы хотите написать код для bash, вы должны сказать об этом в своей строке:

#!/bin/bash
echo -ne "\e]1;$1\a"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .