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:.