Esporta valore $ DISPLAY nello script Shell

2

Sto cercando di stampare il valore di $ DISPLAY sotto il mio script Shell.

Ho uno script di shell seguente che esporta il DISPLAY:

#!/bin/sh
export DIPLAY=:10.0

Qui, ogni volta ho bisogno di modificare manualmente il valore per eseguire l'attività.

Possiamo rendere dinamico il valore DISPLAY usando il comando:

echo $DISPLAY  'Prints the current Display Value :10.0

Ho provato con il codice seguente ma non assegnerà il valore DISPLAY alla variabile:

#!/bin/sh
export DIPLAY=echo $DISPLAY

Di seguito è riportato il codice completo:

#!/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 

Sto eseguendo questo script di shell ogni ora usando il lavoro crontab

Si prega di suggerire !!

    
posta Chetan G 05.02.2015 - 10:36

3 risposte

3

Non posso commentare perché non ho ancora 50 punti. Voglio solo commentare la risposta di muru: awk ha bisogno di stampare la terza colonna per il numero DISPLAY (almeno in 16.04), poiché la seconda colonna "" stampa il numero tty.

così invece di:

w -h $USER | awk ' ~ /:[0-9.]*/{print }' 

dovrebbe essere:

w -h $USER | awk ' ~ /:[0-9.]*/{print }'

Io uso:

DISPLAY_M=$(echo "export DISPLAY"$(w -h $USER | awk ' ~ /:[0-9.]*/{print }' | sed 's/\:/=\:/')

Quando viene chiamato stampa l'intero export DISPLAY=:0 . La parte sed consiste nell'aggiungere = all'eco.

Grazie.

    
risposta data Sruli 25.01.2017 - 16:38
1

Il comando dovrebbe essere:

#!/bin/bash    
export DISPLAY=$(echo $DISPLAY)

Qui è necessario utilizzare la funzionalità di sostituzione del comando i.e. $(command) di bash .

Modifica

Ora dopo aver visto la tua sceneggiatura completa sto ottenendo l'intera immagine.

Crea innanzitutto un file nella tua directory home ad esempio /home/abc/display_check con la seguente riga:

echo $DISPLAY

Ora nello script originale aggiungi una riga source /home/abc/display_check i.e il tuo script originale può assumere il seguente formato:

#!/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 
    
risposta data heemayl 05.02.2015 - 10:45
1

echo $DISPLAY non funzionerà. Se così fosse, non avresti bisogno di impostare o esportare DISPLAY in primo luogo. Dovrai scoprire qual è il valore appropriato in qualche altro modo.

Se vuoi scoprire che cos'è DISPLAY il tuo utente è attualmente in esecuzione, prova:

w -h $USER | awk ' ~ /:[0-9.]*/{print }'

Quindi puoi fare:

export DISPLAY=$(w -h $USER | awk ' ~ /:[0-9.]*/{print }')
  • w elenca gli utenti attualmente loggati e da dove sono loggati, con DISPLAY utilizzato per gli utenti loggato dalla GUI.
  • Con awk , abbiniamo il secondo campo, la posizione, a qualcosa che assomiglia a DISPLAY e stampalo.
risposta data muru 05.02.2015 - 12:40

Leggi altre domande sui tag