Điểm:0

Truyền đối số lệnh dưới dạng biến

lá cờ ar

Tôi đã tạo một tập lệnh bash để sao lưu máy chủ AWS Ligthsail của mình bằng restic. Cuối cùng thì mọi thứ cũng hoạt động, nhưng có một điều tôi không thể tìm ra câu trả lời.

Chỉ là một phần mà vấn đề là:

// Cài đặt
forget_policy=(--keep-in-daily 7d --keep-in-weekly 1m --keep-in-in-hàng tháng 1 năm --keep-in-in-yearly 2y)

//(⦠mã khác)

quên_old () {
    # Quên và cắt tỉa
    restic -r $RESTIC_REPOSITORY quên "${forget_policy}" --prune | đăng nhập

    # Kiểm tra xem trạng thái thoát có ổn không
    trạng thái = $?
    nếu [ $status -ne 0 ]; sau đó
        log "Không thể quên ${status}"
        thoát 1
    fi
}

//(⦠mã khác)

quên_cũ

đầu ra

>> đối số không hợp lệ "--prune" cho cờ "--keep-within-daily": không tìm thấy số nào

Tôi không thể chuyển biến $forget_policy cho lệnh quên. Khi tôi bọc varibale trong "" tôi nhận được

>> cờ không xác định: --keep-trong-hàng-ngày 7ngày --keep-trong-tuần-1m --keep-trong-tháng-1 năm --keep-trong-năm-2 năm

Khi tôi sao chép nội dung biến trực tiếp vào lệnh, nó sẽ hoạt động. Vì vậy, tôi phải làm điều gì đó sai khi chuyển biến.

Điểm:1
lá cờ hr

Mở rộng mỗi trong số các phần tử của mảng đối số của bạn dưới dạng một từ riêng biệt mà bạn cần "${forget_policy[@]}"

"${forget_policy}" tương đương với "${forget_policy[0]}" vì vậy chỉ mở rộng đến đối số đầu tiên - đó là lý do tại sao bạn kết thúc với --keep-trong-daily --prune

xem Mảng tiểu mục dưới THÔNG SỐ trong trang hướng dẫn bash.

Rever_2019 avatar
lá cờ ar
Cảm ơn. Tôi (đáng buồn là) không viết đủ kịch bản bash. Không để ý tôi đã biến nó thành một mảng, thêm dấu (). Trước đây, tôi chỉ có "forget_policy="--keep-within-daily 7d --â¦". Đó chỉ là một chuỗi và không hoạt động. Đã tìm kiếm trên Google và tìm thấy "phiên bản mảng"
lá cờ hr
@ Rever_2019 trong trường hợp đó, đó là một tai nạn đáng mừng - sử dụng một mảng chính xác là cách phù hợp để xử lý loại danh sách đối số này;)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.