Как создать сценарий bash с помощью сценария bash?

Я пытаюсь создать сценарий после установки, который сам создает сценарий bash (сценарий startapp). Это оригинальный сценарий запуска:

#!/bin/bash
if [ `wmctrl -l | grep -c "$2"` != 0 ]
then wmctrl -a "$2"
else $1 &
fi

И это мой сценарий после установки

#!/bin/sh
# CONFIGURE Teamviewer startup link
sudo echo -e "#!/bin/bash\nif [ `wmctrl -l | grep -c "$2"` != 0 ]\nthen wmctrl -a "$2"\nelse $1 &\nfi" > /usr/local/bin/startapp
# Activate script
sudo chmod +x /usr/local/bin/startapp

Но когда я проверил сценарий с помощью sudo nano / usr / local / bin / startapp , я получил это странное изменение скрипт:

#!/bin/bash
if [ 6 != 0 ]
then wmctrl -a 
else  &
fi

Не могли бы вы сказать мне, почему система изменила его автоматически?

0
задан 11 June 2020 в 21:27

2 ответа

Используйте здесь документ

#!/bin/sh

cat <<'EOF' | sudo tee /usr/local/bin/startapp
#!/bin/bash
if [ `wmctrl -l | grep -c "$2"` != 0 ]
then wmctrl -a "$2"
else $1 &
fi
EOF

Использование кавычек (любого рода, включая обратную косую черту \ EOF ) в разделителе предотвращает преждевременное расширение замещений , вызывающим оболочку.

1
ответ дан 19 June 2020 в 21:26

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

0
ответ дан 19 June 2020 в 21:26

Другие вопросы по тегам:

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