नोट: समाधान नीचे दिए गए परीक्षण और सही ढंग से काम करने के लिए जाना जाता है।
यदि आप जिस पथ से गुजर रहे हैं, उसका एकल भाग आपके पास है तो एकल उद्धरण परिवर्तनशील विस्तार को तोड़ देगा।
यहाँ एक स्क्रिप्ट है जो गोलाकार फ़ाइलनाम कमांड-कॉन्फिगर_ tar.gz * के उपयोग के मामले के लिए DOUBLE उद्धरण का उपयोग करता है।
#!/bin/bash
USEREXECUTINGSCRIPT='admin'
SCRIPTSDIR="myscripts"
SCPUSER='terrencehoulahan'
SCPUSERPASSWD='Change-Me'
SCPHOST='1.2.3.4'
SCPDIRECTORYREMOTE='/Users/terrencehoulahan/Downloads/Ubuntu/18.04'
## Uncomment appropriate below command for your distro to install "sshpass"
#apt-get -y sshpass
#yum -y install sshpass
sshpass -p "$SCPUSERPASSWD" scp -o StrictHostKeyChecking=no $SCPUSER@$SCPHOST:"$SCPDIRECTORYREMOTE/command-configure_*.tar.gz" $(getent passwd|grep ^$(echo $USEREXECUTINGSCRIPT)|cut -d ':' -f6)/$SCRIPTSDIR/
समापन दोहरे उद्धरण के बाद, स्थानीय निर्देशिका लक्ष्य का निर्माण केवल निर्दिष्ट उपयोगकर्ता के होम डायर को / etc / passwd से निकालकर किया जाता है ।
Scp कमांड अपने आप में पहले से मौजूद है sshpass
और यूजर इंटरेक्शन के बिना कमांड -o StrictHostKeyChecking=no
को पूरी तरह से स्वचालित करने scp
के लिए है। कठोर-कोडिंग पथों की तुलना में जटिल लेकिन बेहतर लगते हैं, जो समय-समय पर बदलने की उम्मीद की जाती है।
किसी भी तरह से, दोहरे उद्धरण चिह्नों का उपयोग कर एक उदाहरण जहां आप जिस रास्ते पर चल रहे हैं, वहां विस्तार करने की अनुमति दी जानी चाहिए। HTH