Tôi đang cố viết một kịch bản lệnh shell để SSH vào máy chủ và sau đó nhắc người dùng nhập tệp/thư mục.SSH heredoc: bash prompt
ssh $SERVER <<EOF
cd downloads/
read -e -p "Enter the path to the file: " FILEPATH
echo $FILEPATH
eval FILEPATH="$FILEPATH"
echo "Downloading $FILEPATH to $CLIENT"
EOF
Tôi đang sử dụng heredoc thay vì dấu ngoặc kép sau SSH để thực thi các lệnh này vì tập lệnh shell của tôi khá lớn và tôi không muốn thoát từng dấu ngoặc kép.
Khi tôi đang sử dụng dấu ngoặc kép, dấu nhắc đã hoạt động tốt. Tuy nhiên, bây giờ tôi đang sử dụng heredoc, dấu nhắc không còn hoạt động nữa.
Tôi có thể làm gì để nhận lời nhắc làm việc với heredoc? Và nếu không muốn nói, là có cách nào tôi bố trí kịch bản của tôi để nhắc làm việc mà không cần gói tất cả mọi thứ trong dấu ngoặc kép và thoát, như vậy:
ssh $SERVER "
cd downloads/
read -e -p \"Enter the path to the file: \" FILEPATH
echo $FILEPATH
eval FILEPATH=\"$FILEPATH\"
echo \"Downloading $FILEPATH to $CLIENT\"
exit
"
Thay đổi nó thành '<< 'EOF'' chỉ đưa tôi đến dấu nhắc bash bên trong máy chủ SSH. Những gì tôi thực sự có nghĩa là bởi 'dấu nhắc' là: 'read -e -p' Nhập đường dẫn đến tập tin: "FILEPATH' - kịch bản sẽ nhắc người dùng cho một tập tin. –
Ban đầu tôi đã sử dụng dấu nháy đơn, nhưng sau đó tôi không thể truy cập các biến như '$ CLIENT', được định nghĩa trước lệnh SSH. –
Đã thêm đề xuất về dấu nháy đơn chưa thoát. xấu xí, nhưng tự hỏi liệu nó có hiệu quả với bạn không? – Faiz