GNU/Linux >> Linux の 問題 >  >> Linux

Bashスクリプト実行からのRsync不明なオプション?

目の前のコンピューターから宛先コンピューターにローカルネットワーク経由でrsyncを使用してフォルダーを単純に同期しようとしています。

#!/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"

自分に書き込み権限を与えるには

chmod +x nameofscript.sh

実行すると、次のように出力されます。

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

これらのオプションを適切に保存してスクリプトとして実行するにはどうすればよいですか?

承認された回答:

"$OPTIONS"を引用する 、シェルはそれを単一の文字列としてrsyncに渡しているため、rsyncは"--recursive --ignore-existing --progress"という名前の単一のオプションを見つけようとしています。 、これらは3つの別個のオプションであるため、明らかに存在しません。

これで修正されるはずです:

rsync $OPTIONS "$SRC_DIR" "$DST_DIR"

より良いオプションは、bash配列を使用してオプションを格納することです。

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

配列を使用する利点は、必要に応じてスペースを含むアイテムを導入できることです。


Linux
  1. フォルダから最も古いファイルを削除するためのBashスクリプト?

  2. Bashスクリプト内からフルパスを取得しますか?

  3. BashスクリプトからTmuxセッションに参加しているかどうかを確認するにはどうすればよいですか?

  1. bashスクリプトが同時に実行されないようにする

  2. Bashスクリプトでクリップボードとの間でパイプする

  3. アトミック作成ファイルが存在しない場合は、bash スクリプトから

  1. URLからbashスクリプトを実行

  2. Bash スクリプト:セッションをログに記録するための bash スクリプトからのスクリプト コマンドの使用

  3. Bash シェル スクリプト内から Vim を開く