scpコマンドで複数のファイルに変数を使用する方法

scpコマンドで複数のファイルに変数を使用する方法

scp複数のファイルを作成しようとしています。これにより、ls {aaa,bbb}*_list.txtオプションのファイルのみを表示できます。ただし、変数に割り当ててコマンドで使用しようとするとscp機能しません。

私は次のように試しました

files_to_scp="{aaa,bbb}*_list.txt"
scp $files_to_scp user@host:.

エラーが発生します{aaa,bbb}*_list.txt: No such file or directory。ただし、エラーパス({aaa,bbb}*_list.txt)をコピーして実行すると、lsファイルが表示されます。ここに何か問題があるかもしれません。

ベストアンサー1

これ支柱の拡張有効な/可能なファイルセットに拡張するには、構文に中{aaa,bbb}括弧と引用符のない文字を含める必要があります。,OPでは、 "{aaa,bbb}*_list.txt"そのままリテラル文字列として保持し、まったく拡張しないでください。

また、中かっこ拡張を変数に保存し、その変数を挿入して中括弧を拡張することは決して機能しません。なぜなら、中かっこ拡張は他のシェル拡張の前に起こるからです。つまり、中かっこが拡張されると予想すると、$files_to_scpシェルはすでに拡張に合格しています。かっこポイント

変数の使用はいいえ複数の単語をキャッチする正しい方法。ファイル名にスペースやその他のシェル特殊文字が含まれていると、ひどく失敗します。配列タイプと適切な引用符拡張を使用する

files_to_scp=({aaa,bbb}*_list.txt)

次に、結果を次のように使用します。

scp "${files_to_scp[@]}" user@host:.

おすすめ記事