2011-06-02 78 views
2

我有一個Linux shell腳本,看起來像這樣:傳遞變量從shell腳本的GNU屏幕

tron="/home/duke/aa/bin/armagetronad-dedicated" 
var="/home/duke/aa/servers/$1/var/" 
log="${var}logs/all_console_logs.log" 
userconfigdir="${var}customize/config/" 
parser="${var}customize/parser-rpg.php" 
ladderlog="${var}ladderlog.txt" 
cmds="${var}cmd.txt" 

screen -S $1 -X kill 
screen -d -m -S $1 
screen -S $1 -X stuff 'tail -n0 -f -s 0.01 $cmds | (while true; do $tron --userconfigdir $userconfigdir --vardir $var; done) | tee -a $log 
' 

但是,使用stuff傳遞變量到屏幕會話時,它實際上是發送「$ CMDS」而不是$ cmds內的值。是否有可能使變量進入屏幕會話呢?

回答

3

單引號可抑制變量替換。這將工作,而不是最後一行?

screen -S $1 -X stuff "tail -n0 -f -s 0.01 $cmds | (while true; do $tron --userconfigdir $userconfigdir --vardir $var; done) | tee -a $log" 
+0

是的,它做到了,謝謝! – dukevin 2011-06-02 08:36:33