Я пытаюсь Распечатать значение $DISPLAY в соответствии с моим Сценарием оболочки.
У меня есть Следующий сценарий оболочки который Экспорт ДИСПЛЕЙ:
#!/bin/sh
export DIPLAY=:10.0
Здесь, каждый раз я должен изменить Значение вручную для выполнения задачи.
Можем мы заставлять ДИСПЛЕЙ оценить динамическую команду использования:
echo $DISPLAY 'Prints the current Display Value :10.0
Я попробовал ниже кода, но он не будет присваивать значение ДИСПЛЕЯ переменной:
#!/bin/sh
export DIPLAY=echo $DISPLAY
Ниже полный Код:
#!/bin/sh
export DISPLAY=:10.0
export ANT_HOME=/home/abc/Desktop/Eclipse/plugins/org.apache.ant_1.9.2.v201404171502
cd /home/abc/Desktop/auto/Automation/xyz
ant usage clean compile build run makexsltreports sendemail
Я выполняю этот сценарий оболочки каждый час с помощью crontab задание
Предложите!!
Я не могу прокомментировать, поскольку у меня еще нет 50 точек. Просто хочу прокомментировать ответ muru: awk должен распечатать третий столбец для числа ДИСПЛЕЯ (по крайней мере, в 16,04), так как второй столбец "$2"
печатает tty число.
так вместо:
w -h $USER | awk '$2 ~ /:[0-9.]*/{print $2}'
это должно быть:
w -h $USER | awk '$3 ~ /:[0-9.]*/{print $3}'
я использую:
DISPLAY_M=$(echo "export DISPLAY"$(w -h $USER | awk '$3 ~ /:[0-9.]*/{print $3}' | sed 's/\:/=\:/')
При вызове это печатает полное export DISPLAY=:0
. sed часть должна добавить =
к эху.
Спасибо muru.
Команда должна быть:
#!/bin/bash
export DISPLAY=$(echo $DISPLAY)
Здесь необходимо использовать функциональность замены команды т.е. $(command)
из bash
.
РЕДАКТИРОВАНИЕ:
Теперь после наблюдения Вашего полного сценария я получаю целое изображение.
Первый создают файл в Вашем home
каталог, например /home/abc/display_check
наличие следующей строки:
echo $DISPLAY
Теперь в Вашем исходном сценарии добавляют строку source /home/abc/display_check
, т.е. Ваш исходный сценарий может принять следующую форму:
#!/bin/bash
export DISPLAY=$(source /home/abc/display_check)
export ANT_HOME=/home/abc/Desktop/Eclipse/plugins/org.apache.ant_1.9.2.v201404171502
cd /home/abc/Desktop/auto/Automation/xyz
ant usage clean compile build run makexsltreports sendemail
echo $DISPLAY
не будет работать. Если бы это сделало, Вы не должны были бы устанавливать или экспортировать DISPLAY
во-первых. Необходимо будет узнать то, что соответствующее значение использует некоторый другой путь.
, Если Вы хотите узнать то, что DISPLAY
в настоящее время выполняет Ваш пользователь, попробуйте:
w -h $USER | awk '$2 ~ /:[0-9.]*/{print $2}'
Тогда можно сделать:
export DISPLAY=$(w -h $USER | awk '$2 ~ /:[0-9.]*/{print $2}')
w
списки в настоящее время зарегистрированные пользователи и где они зарегистрированы от, с DISPLAY
используемый для пользователей, вошли в систему GUI. awk
, мы соответствуем второму полю, местоположению, к чему-то, что похоже DISPLAY
, и распечатайте его.