Одинарные кавычки в раскрытии переменной остановки 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
Ваш сценарий в основном такой:
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, но я предполагаю, что мир будет обходиться без него.
Просто используйте &
в конце команд.