मैं एक स्क्रिप्ट पर काम कर रहा हूं और मुझे tar
कमांड को गतिशील रूप से बनाने की आवश्यकता है ।
यहाँ दो उदाहरण बताए गए हैं कि मैं क्या करने की कोशिश कर रहा हूँ:
#!/bin/bash
TAR_ME="/tmp"
EXCLUDE=("/tmp/hello hello" "/tmp/systemd*" "/tmp/Temp*")
_tar="tar "`printf -- '--exclude="%s" ' "${EXCLUDE[@]}"`" -zcf tmp.tar.gz"
echo COMMAND: "${_tar}"
${_tar} "$TAR_ME"
echo -e "\n\nNEXT:\n\n"
EXCLUDE=("--exclude=/tmp/hello\ hello" "--exclude=/tmp/systemd*" "--exclude=/tmp/Temp*")
_tar="tar "`printf -- '%s ' "${EXCLUDE[@]}"`" -zcf test.tar.gz"
echo COMMAND: "${_tar}"
${_tar} "$TAR_ME"
मैं _tar
एक कमांड के रूप में उपयोग करने में सक्षम होना चाहता हूं , मैं इसे क्लासिक पथ के साथ काम करने में सक्षम हूं, लेकिन मुझे फ़ोल्डर्स के नाम के रिक्त स्थान के साथ काम करने की आवश्यकता है। और हर बार मुझे ऐसी त्रुटियां मिलीं जो दिखती हैं:
COMMAND: tar --exclude="/tmp/hello hello" --exclude="/tmp/systemd*" --exclude="/tmp/Temp*" -zcf tmp.tar.gz /tmp
tar: hello": Cannot stat: No such file or directory
COMMAND: tar --exclude=/tmp/hello\ hello --exclude=/tmp/systemd* --exclude=/tmp/Temp* -zcf test.tar.gz
tar: hello: Cannot stat: No such file or directory
बस आपको एक चीज जानने की जरूरत है, मुझे बहुत पुरानी मशीनों पर काम करने के लिए मेरी स्क्रिप्ट की आवश्यकता है, जिसका अर्थ है कि मैं अंतिम बैश सुविधाओं का उपयोग नहीं कर सकता।
eval
निष्पादन के सामने कैसे रखा जाए ?