私はスクリプトで作業しており、tar
コマンドを動的に作成する必要があります。
ここに私が何をしようとしているのかを説明する2つの例があります:
#!/bin/bash
TAR_ME="/tmp"
EXCLUDE=("/tmp/hello hello" "/tmp/systemd*" "/tmp/Temp*")
_tar="tar "`printf -- '--exclude="%s" ' "${EXCLUDE[@]}"`" -zcf tmp.tar.gz"
echo COMMAND: "${_tar}"
${_tar} "$TAR_ME"
echo -e "\n\nNEXT:\n\n"
EXCLUDE=("--exclude=/tmp/hello\ hello" "--exclude=/tmp/systemd*" "--exclude=/tmp/Temp*")
_tar="tar "`printf -- '%s ' "${EXCLUDE[@]}"`" -zcf test.tar.gz"
echo COMMAND: "${_tar}"
${_tar} "$TAR_ME"
_tar
コマンドとして使用できるようにしたいのですが、クラシックパスで機能させることができましたが、フォルダ名のスペースを操作する必要があります。そして、毎回次のようなエラーが発生しました:
COMMAND: tar --exclude="/tmp/hello hello" --exclude="/tmp/systemd*" --exclude="/tmp/Temp*" -zcf tmp.tar.gz /tmp
tar: hello": Cannot stat: No such file or directory
COMMAND: tar --exclude=/tmp/hello\ hello --exclude=/tmp/systemd* --exclude=/tmp/Temp* -zcf test.tar.gz
tar: hello: Cannot stat: No such file or directory
知っておくべきことの1つだけです。非常に古いマシンでスクリプトを実行する必要があります。つまり、最後のbash機能を使用できません。
--excludeオプションはその後の単一の文字列のみを受け入れることができると思います。ただし、複数の--excludeステートメントを使用できます。「--exclude = / tmp / hello --exclude = hello」を試してみてください。気にしないで。誤解しました。
—
ルイスM
。@LewisM私は、OPは「を/ tmp /ハローハロー」(はい、スペースでディレクトリを除外したいと思います
—
Archemar
@ShellCodeすべての除外の引用についてはどうでしょうか。例: "--exclude = / tmp / hello hello"
—
Archemar
うん。そのため、後でOopsステートメントを記述します。:)
—
ルイスM
eval
処刑の前に置くのはどうですか?