--regextrans2: コマンドが見つかりません

--regextrans2: コマンドが見つかりません

古いバージョンの Zimbra (7.1.4) からバージョン 8.7.7 に imap を同期するために imapsync 1.727 をテストしていたところ、以下のコマンドで上記のようなエラーが発生しました。

imapsync \
  --maxsize 52428800 --buffersize 8192000 \
  --nofoldersizes --nosyncacls --subscribe --syncinternaldates \
  --authmech2 PLAIN \
  --exclude '(?i)\b(Junk|Spam|Trash)\b' \
  --skipheader 'X-*' \
  --regexflag 's/\\\\(Answered|Flagged|Deleted|Seen|Recent|Draft)[^\s]*\s*//ig' --debugflags \
  --regextrans2 's,:,-,g' \
  --regextrans2 's,\",'\'',g' \
  --regextrans2 's,\s+(?=/|$),,g' \
  --regextrans2 's,^(Briefcase|Calendar|Contacts|Emailed Contacts|Notebook|Tasks)(?=/|$), $1 Folder,ig' \
  --host1 "$host1" --host2 "$host2" \
  --user1 "$username" --authuser1 admin_account_name \
  --password1 admin_account_password \
  --user2 "$username" --authuser2 admin_account_name \
  --password2 admin_account_password \
  --regextrans2 's,\",-,g' \ # change quotes to dashes
  --regextrans2 's,&AAo-|&AA0ACg-|&AA0ACgANAAo-(?=/|$),,g' \
  --ssl1 --authmech1 PLAIN --maxcommandlength1 16384 \
  --dry --debug --debugimap \

regtrans2 は 18 行目で失敗するのに、他の行では失敗しないのはなぜですか?

答え1

同じ行に、行継続の後にコメントを続けることはできません。

これで結構です:

echo \
hello

これはダメです:

echo \ #newline here
hello

最初の例では、 が\改行をエスケープし、実行されるコマンドは になりますecho hello

2 番目のケースでは、 は\その後のスペースをエスケープするだけで、#newline here出力として取得され、その後にエラー メッセージhello: not found [No such file or directory](または同様のメッセージ) が続きます。

したがって、コメントを削除してください(すべて(スペースを含む\)を最後の行に挿入すると、

--regextrans2 's,\",-,g' \ # change quotes to dashes

答え2

過去の経験を思い出すと、以下のように具体的に再配置する必要があるように思われるかもしれませんが、そうすると機能します。

imapsync \
  --dry \
  --host1 "$host1" --host2 "$host2" \
  --user1 "$username" --authuser1 admin \
  --ssl1 --authmech1 PLAIN \
  --password1 "$admin_account_password" \
  --user2 "$username" --authuser2 admin \
  --ssl2 --authmech2 PLAIN  \
  --password2 "$admin_account_password" \
  --maxsize 52428800 --buffersize 8192000 \
  --nofoldersizes --nosyncacls --subscribe --syncinternaldates \
  --authmech2 PLAIN \
  --exclude '(?i)\b(Junk|Spam|Trash)\b' \
  --skipheader 'X-*' \
  --regextrans2 "s,&AAo-|&AA0ACg-|&AA0ACgANAAo-(?=/|$),,g" \
  --regexflag 's/\\\\(?!Answered|Flagged|Deleted|Seen|Recent|Draft)[^\s]*\s*//ig' --debugflags \
  --regextrans2 's,:,-,g' \
  --regextrans2 's,\",'\'',g' \
  --regextrans2 's,\s+(?=/|$),,g' \
  --regextrans2 "s,^(Briefcase|Calendar|Contacts|Emailed Contacts|Notebook|Tasks)(?=/|$), $1 Folder,ig" \
  --regextrans2 's,\",-,g' \

関連情報