क्यों गूंज $ (crontab -l) वर्तमान वर्किंग डायरेक्टरी लिस्टिंग को आउटपुट करता है और केवल कॉन्टैब फाइल की सामग्री ही?


1

तो अगर cwd है /tmp अभी व:

crontab -l
> #min hour day mon dow  command
> * * * * * /usr/local/bin/growlnotify -t 'helloTitle' -m 'helloMessage' -n 'myApp' -sw

परंतु:

echo $(crontab -l)
> #min hour day mon dow  command 0004d519be91d 0004d519d798b launch-0NKnNe launch-NdhkpV
launch-bqJRD2 launch-zac20v launchd-276.rbWQ6r 0004d519be91d 0004d519d798b launch-0NKnNe
launch-NdhkpV launch-bqJRD2 launch-zac20v launchd-276.rbWQ6r 0004d519be91d 0004d519d798
launch-0NKnNe launch-NdhkpV launch-bqJRD2 launch-zac20v launchd-276.rbWQ6r 0004d519be91d 
0004d519d798b launch-0NKnNe launch-NdhkpV launch-bqJRD2 launch-zac20v launchd-276.rbWQ6r 
0004d519be91d 0004d519d798b launch-0NKnNe launch-NdhkpV launch-bqJRD2 launch-zac20v 
launchd-276.rbWQ6r /usr/local/bin/growlnotify -t 'helloTitle' -m 'helloMessage' -n 'myApp' -sw

इसलिए प्रथम लाइन + / tmp सामग्री + अंतिम Crontab की लाइन

ऐसा व्यवहार क्यों? मुझे ज़रूरत है $(crontab -l) के लिये if [[ $(crontab -l | grep "^...$") =~ "^...$"]]

जवाबों:


1

आप फ़ाइल सूची प्राप्त करते हैं क्योंकि "crontab -l" स्टार अक्षर (*) देता है जो तब ग्लोब वर्णों के रूप में व्याख्या करता है।

मेरा सुझाव है कि आप अपने परीक्षण के चारों ओर अपनी शेल स्क्रिप्ट में 'सेट -f' का उपयोग करके ग्लोब व्याख्या की बारी करें:

set -f
if $(crontab -l | grep -q "^...$"); then
  # your stuff
fi
set +f

मुझे पता था! के लिए आपको बहुत - बहुत धन्यवाद set -f!
static

5
एक भी बना सकता है echo "$(crontab -l)", भी मदद करता है
static

2
इसे हल करने के लिए डबल-कोट्स एक बेहतर तरीका है।
Gordon Davisson

यह एक सिंटैक्स त्रुटि है - यह आउटपुट को निष्पादित करने का प्रयास करता है grep और यदि यह एक मान्य कमांड नहीं है तो विफल हो जाता है।
tripleee

0

पिछले उत्तर में सुधार करने पर, उप-क्रम में कमांड चलाने का कोई मूल्य नहीं है।

if crontab -l | grep -q '^...$'; then
    your stuff
fi

बस जोर देने के लिए, यह जरूरत से बचा जाता है set -f चूंकि केवल आउटपुट कोड से grep जांच की जा रही है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.