LƯU Ý: Giải pháp được cung cấp dưới đây đã được thử nghiệm và được biết là hoạt động chính xác.
Các trích dẫn đơn sẽ phá vỡ sự mở rộng biến nếu bạn đặt bí danh cho một phần của đường dẫn mà bạn đang tạo ra.
Đây là một tập lệnh sử dụng các trích dẫn NHÂN ĐÔI cho trường hợp sử dụng của tên tệp được đặt tên toàn cầu-configure_ .tar.gz * bằng cách sử dụng một đường dẫn có bí danh với một biến:
#!/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/
Sau khi trích dẫn kép, mục tiêu thư mục cục bộ được xây dựng bằng cách chỉ trích xuất thư mục nhà của người dùng được chỉ định từ / etc / passwd .
Bản thân lệnh scp được mở đầu sshpass
và -o StrictHostKeyChecking=no
để tự động hóa hoàn toàn scp
lệnh mà không cần tương tác của người dùng. Có vẻ phức tạp nhưng tốt hơn so với các con đường mã hóa cứng được dự kiến sẽ thay đổi theo thời gian.
Anyhoo, một ví dụ sử dụng dấu ngoặc kép trong đó các biến trong đường dẫn bạn đang cần phải được phép mở rộng. HTH