หมายเหตุ:โซลูชั่นที่นำเสนอด้านล่างผ่านการทดสอบและเป็นที่รู้จักในการทำงานอย่างถูกต้อง
เครื่องหมายคำพูดเดี่ยวจะทำให้การขยายตัวแปรผันหากคุณได้แยกส่วนของเส้นทางที่คุณกำลังโค้ง
ต่อไปนี้เป็นสคริปต์ที่ใช้เครื่องหมายคำพูดคู่สำหรับกรณีการใช้งานของชื่อไฟล์คำสั่ง glob - command_ configure_ .tar.gz *โดยใช้เส้นทางนามแฝงพร้อมตัวแปร:
#!/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/
หลังจากที่ราคาคู่ปิดเป้าหมายไดเรกทอรีท้องถิ่นที่สร้างขึ้นโดยเพียงแค่การสกัด dir บ้านของผู้ใช้ที่ระบุจาก/ etc / passwd
คำสั่ง scp นั้นจะถูกนำหน้าด้วยsshpass
และ-o StrictHostKeyChecking=no
เพื่อทำให้scp
คำสั่งนั้นสมบูรณ์โดยอัตโนมัติ ดูซับซ้อน แต่ดีกว่าเส้นทางเข้ารหัสยากซึ่งคาดว่าจะเปลี่ยนแปลงได้ตลอดเวลา
Anyhoo ตัวอย่างการใช้เครื่องหมายคำพูดคู่ที่ตัวแปรในเส้นทางที่คุณกำลังวนซ้ำต้องได้รับอนุญาตให้ขยาย HTH