GNU/Linux >> Belajar Linux >  >> Linux

Opsi Tidak Dikenal Rsync Dari Eksekusi Skrip Bash?

Saya mencoba menyinkronkan folder menggunakan rsync melalui jaringan lokal saya dari komputer di depan saya ke komputer tujuan.

#!/bin/bash

echo "This script will sync from my Macbook Dropbox/scripts/ folder to [email protected] @ Norms house"

OPTIONS="--recursive --ignore-existing --progress"
SRC_DIR="~/Dropbox/scripts/"
DST_DIR="[email protected]:~/scripts/"
rsync "$OPTIONS" "$SRC_DIR" "$DST_DIR"

Untuk memberi diri saya hak menulis

chmod +x nameofscript.sh

Saat saya menjalankannya, hasilnya:

rsync: --recursive --ignore-existing --progress: unknown option

Bagaimana cara menyimpan opsi ini dengan benar dan menjalankannya sebagai skrip?

Jawaban yang Diterima:

Dengan mengutip "$OPTIONS" , Shell meneruskannya ke rsync sebagai string tunggal, jadi rsync mencoba menemukan satu opsi bernama "--recursive --ignore-existing --progress" , yang jelas tidak ada, karena ini adalah tiga opsi terpisah.

Ini akan memperbaikinya untuk Anda:

rsync $OPTIONS "$SRC_DIR" "$DST_DIR"

Opsi yang lebih baik mungkin menggunakan bash array untuk menyimpan opsi Anda.

OPTIONS=(
    --recursive
    --ignore-existing
    --progress
)
# ...
rsync "${OPTIONS[@]}" "$SRC_DIR" "$DST_DIR"

Keuntungan menggunakan array adalah Anda dapat memperkenalkan item yang menyertakan spasi, jika diperlukan.


Linux
  1. Dapatkan Jalur Lengkap Dari Dalam Skrip Bash?

  2. Pipa ke/dari clipboard dalam skrip Bash

  3. Skrip Bash:Menggunakan perintah skrip dari skrip bash untuk mencatat sesi

  1. Buka Vim dari dalam skrip Bash Shell

  2. atom buat file jika tidak ada dari skrip bash

  3. Panggil skrip Python dari bash dengan argumen

  1. Mencegah skrip bash berjalan secara bersamaan

  2. Bash Script Untuk Menghapus File Terlama Dari Folder A?

  3. bash + baca variabel &nilai dari file dengan skrip bash