/ / बैश कंपाउंड / नेस्टेड कंडिशनल ऑपरेटर इश्यू - बैश, ऑपरेटर्स

बैश कंपाउंड / नेस्टेड सशर्त ऑपरेटर मुद्दा - बैश, ऑपरेटर

मेरा बैश कोड इस प्रकार है:

copiedFlag=false
..
if [...]
cp originalFile newFile && copiedFlag=true
fi
..
if[....]
copiedFlag || ( cp originalFile newFile && copiedFlag=true )
fi
..

if [ copiedFlag == true ]; then
cp newFile originalFile
fi
..

यौगिक स्थिति copiedFlag || ( cp originalFile newFile && copiedFlag=true ) किसी तरह काम नहीं करता है।

लेकिन अगर मैं ऐसा करता हूं, तो यह काम करता है: copiedFlag || cp originalFile newFile && copiedFlag=true

मेरे तर्क में यह एक महत्वपूर्ण कदम है, इसलिए मैं यह सुनिश्चित करना चाहता हूं कि मेरे कार्य को ब्रेसिज़ में संलग्न करके बिल्कुल सही है। यह काम क्यों नहीं करता है? मैं क्या गलत कर रहा हूं?

उत्तर:

उत्तर № 1 के लिए 1

यौगिक स्थिति copiedFlag || ( cp originalFile newFile && copiedFlag=true ) किसी तरह काम नहीं करता है।

यह काम नहीं करता है क्योंकि आप एक नया उप-संस्करण और परिवर्तन कर रहे हैं copiedFlag वर्तमान खोल में दिखाई नहीं दे रहे हैं।

आप वास्तव में यहाँ एक उपधारा को स्पॉन करने की जरूरत नहीं है, बस ब्रेस अभिव्यक्ति का उपयोग करें { ...; } जैसा:

"$copiedFlag" || { cp originalFile newFile && copiedFlag=true; }