我正在编写脚本,因此需要tar
动态生成命令。
这是两个示例,以说明我要执行的操作:
#!/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
您只需要知道一件事,我需要我的脚本才能在非常旧的计算机上工作,这意味着我无法使用最新的bash功能。
我相信--exclude选项在它之后只能接受一个字符串。但是,您可以有多个--exclude语句。也许尝试“ --exclude = / tmp / hello --exclude = hello”糟糕。没关系。我误解了。
—
Lewis M
@LewisM我认为OP希望排除目录“ / tmp / hello hello”(是的,带有空格
—
。– Archemar
@ShellCode如何引用所有排除项,例如“ --exclude = / tmp / hello hello”
—
Archemar
是的 这就是为什么我稍后再发表Oops声明。:)
—
Lewis M
如何把
—
jimmij
eval
在执行的面前?