ファイル名を場所パラメーターとして使用するスクリプトがあります。私はそれらに対していくつかのことを行い、その後tarを実行します。現在、私のスクリプトは正しく動作しません。エコーラインはデバッグ目的で使用されます。
この声明を明確にしてください。
しかし、スクリプトでtarを使用しようとすると、tarしたいファイルをアーカイブできますか?
破片
while [[ $# > 0 ]]; do
key="$1"
shift
files=$files" "\"${key}\"
done
echo tar -cvf backup.tar $files
tar -cvf backup.tar $files
出力:
tar -cvf backup.tar "test.txt"
tar: "test.txt": Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
空白のあるファイルを処理したいので、ファイル名(test.txt)の周りに二重引用符を使用しています。
スクリプトから引用符(\ ")を削除すると機能しますが、スペースを含むファイル名は処理できません。
どんなアイデアがありますか?
答え1
常にすべてのパラメータを使用している場合は、tar
次のように呼び出すだけですtar -cvf backup.tar "$@"
。そうでなくサブセットを選択した場合(表示しませんが)、次のように配列でファイルのリストを作成します。
declare -a files
while [[ $# > 0 ]]; do
key="$1"
shift
# assume some filtering goes on here
files+=("$key")
done
tar -cvf backup.tar "${files[@]}"