2017-02-09 10 views
11
rest(){ 
    echo "have a rest in "$1 " minutes" 
    at -f /home/rest.sh now+$1 minutes 
} 

rest.sh स्क्रिप्ट को संपादित करने के लिए।बाकी आदेश में सरलीकृत किया जा सकता है?

vim /home/rest.sh 
xscreensaver-command --lock 

इसका परीक्षण करने के लिए।

rest 60 
have a rest in 60 minutes 
warning: commands will be executed using /bin/sh 
job 7 at Thu Feb 9 11:15:00 2017 

बाकी हिस्सों में at आदेश SIMPLIFED जा सकता है?
पाइप या अन्य तरीके से पैरामीटर पास करने के लिए /home/rest.sh को हटाने के लिए?

उत्तर

2

पर और बैच मानक इनपुट या निर्दिष्ट फ़ाइल से कमांड को पढ़ते हैं जिन्हें बाद में/bin/sh का उपयोग करके निष्पादित किया जाना है।

man at

तो, आप इसे एक HEREDOC साथ आदेश, इस तरह फ़ीड कर सकते हैं:

rest(){ 
    echo "have a rest in "$1 " minutes" 
    at now+$1 minutes <<EOF 
    xscreensaver-command --lock 
EOF 
} 

(ध्यान दें कि सीमा स्ट्रिंग EOF उसके सामने कोई श्वेत रिक्ति नहीं हो सकता)

संबंधित मुद्दे