Simple Startup Script Not Behaving

Одинарные кавычки в раскрытии переменной остановки bash, поэтому следующее ищет литерал $G$numдля замены литералом $G$N

sed -i -e 's/$G$num/$G$N/g' file

Вы хотите, чтобы расширение bash произошло, поэтому вы должны использовать двойные кавычки и экранировать любые специальные символы вручную:

sed -i -e "s/\$G$num/\$G$N/g" file

Вы можете увидеть разницу с помощью следующего скрипта:

#!/bin/bash

for num in {1..229}; do
  N=$(($num+229))
  echo '$G$num $G$N' vs "\$G$num \$G$N"
done

Производит

$G$num $G$N vs $G1 $G230
$G$num $G$N vs $G2 $G231
$G$num $G$N vs $G3 $G232
...
$G$num $G$N vs $G228 $G457
$G$num $G$N vs $G229 $G458
0
09.09.2017, 20:13
1 ответ

Ваш сценарий в основном такой:

sleep 5 && mate-terminal --geometry=87x47+0+0
mate-terminal --geometry=87x47+802+0

Это означает «подождите пять секунд, затем запустите терминал, когда это будет сделано, запустите второй терминал». «Готово» здесь означает, что терминал завершил работу и вернул управление сценарию.

Возможно, вам нужно

sleep 5
xtoolwait mate-terminal --geometry=87x47+0+0
xtoolwait mate-terminal --geometry=87x47+802+0

xtoolwaitвернет управление остальной части сценария, как только X-клиент, который он запускает, (терминал )отобразит свое окно.

xtoolwaitдолжен быть установлен с программным обеспечением вашего X-сервера, но если это не так, он должен быть доступен в виде пакета из вашего обычного дистрибутива.

В случае, если (он был удален как пакет Debian и Ubuntu ), вы можете использовать

sleep 5
mate-terminal --geometry=87x47+0+0 &
mate-terminal --geometry=87x47+802+0 &

чтобы просто запускать терминалы как фоновые процессы, как вы сами предложили.


Когда я в последний раз интересовался, где что появилось на моем рабочем столе, около 15 с лишним лет назад, xtoolwaitбыл частью стандартного дистрибутива X11, если я правильно помню. С тех пор я стал запускать одно приложение на каждый виртуальный рабочий стол и редко использую что-либо, кроме терминала с tmuxи браузера.

Я немного удивлен, увидев, что xtoolwaitбольше не является частью стандартного пакета X11, но я предполагаю, что мир будет обходиться без него.

Просто используйте &в конце команд.

2
28.01.2020, 02:33

Теги

Похожие вопросы