мой скрипт: echo 123456 > /folder/folder/123.txt

Я запустил скрипт с помощью xterm: xterm -e my.sh &

Не работает

2 ответа2

1

Существует одна серьезная проблема и, возможно, одна незначительная проблема с вашим вызовом xterm. Во-первых, вы не хотите, чтобы сценарий & служил фоном для скрипта - он, скорее всего, делает именно то, что вы просили, и работает в фоновом режиме (фактически невидимым - вы можете увидеть его с помощью ps или заданий в оболочке, в которой вы его запустили от; пс -А откуда угодно и т. д.).

Я прочитал вашу ситуацию так: вы пытаетесь создать новый экземпляр xterm и запустить в нем этот скрипт; и это будет не то, что на заднем плане (по крайней мере, заметно).

Во-вторых, вы должны указать полный путь к my_script.sh, использовать его полный путь и полностью заключить аргумент в флаг -e в кавычки, например, "/home/you/my_script.sh"

Это может не вызывать у вас проблемы здесь; Я не уверен. В какой-то момент это создаст вам проблему, если вы напишете подобные сценарии в будущем, так как без кавычек вы можете стать жертвой непреднамеренного расширения bash.

Последнее замечание - при вызове скрипта bash из оболочки bash, #!/bin/bash на самом деле совершенно не нужен. Это хорошая привычка, и она делает ее более портативной - кто-то еще прыгнет на это и скажет:/usr/bin/env bash является БОЛЬШЕ переносимым, и да, это так. Но вам не нужно, чтобы он работал, при условии, что вы вызываете скрипт из bash (но он всегда должен быть у вас).

0

Убедитесь, что ваш скрипт начинается с шебанга в форме:

#!/bin/bash #(or #!/bin/sh for POSIX compliance)

Затем убедитесь, что вы сделали исполняемый скрипт, выполнив:

$ chmod +x my_script.sh

Наконец попробуйте запустить скрипт:

$ ./my_script.sh

Имейте в виду, что xterm - это графический эмулятор терминала, а не Bash.

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