$DISPLAY экспорта оценивают в Сценарии оболочки

Я пытаюсь Распечатать значение $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 задание

Предложите!!

2
задан 5 February 2015 в 13:48

3 ответа

Я не могу прокомментировать, поскольку у меня еще нет 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.

3
ответ дан 3 August 2019 в 16:55

Команда должна быть:

#!/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 
1
ответ дан 3 August 2019 в 16:55

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, и распечатайте его.
1
ответ дан 3 August 2019 в 16:55

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

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