Bash配列を使用したオプションの追加

Bash配列を使用したオプションの追加

bashスクリプトを使用してrsyncコマンドを呼び出しています。という配列にいくつかのオプションを収集することにしましたoser。すべての共通オプションを配列に配置するのではなく、2つの呼び出しの違いを見て配列に配置するのがアイデアです。

これで --backup の可能性を追加したいのですが、rsync実装方法が混乱しています。

  oser=()
  (( filetr_dryrun == 1 )) && oser=(--dry-run)

  if (( filetr_dryrun == 1 )); then 

    rsync "${oser[@]}" -av --progress --log-file="$logfl" "$source" "$destin"

  elif (( filetr_exec == 1 )); then
      
    rsync "${oser[@]}" -av --progress --log-file="$logfl" "$source" "$destin"

  else

    rsync "${oser[@]}" -av --progress --log-file="$logfl" "$source" "$destin"

  fi

ベストアンサー1

これはどうですか:

# "always" options: you can put any whitespace in the array definition
oser=( 
    -av 
    --progress 
    --log-file="$logfl"
)

# note the `+=` below to _append_ to the array
(( filetr_dryrun == 1 )) && oser+=( --dry-run )

# now, `oser` contains all the options
rsync "${oser[@]}" "$source" "$destin"

より多くのオプションを追加するには、初期oser=(...)定義に追加するか、一部の条件がある場合はoser+=(...)配列に追加を使用します。

おすすめ記事