2
我遇到過7z(或bash,我還不知道)的奇怪行爲。 隨着下面的腳本:來自bash腳本的7z不會排除目錄
/usr/bin/7z a $lst1 -v2048M arch0.7z /home/user
我也試着:
#!/bin/bash
find /home/user -type f -name "*.pdf" | cut -c 10- > /home/user/exclude_list2.lst;
lst1=" [email protected]/home/user/exclude_list2.lst -xr!'*.config/*' -xr!'*.cache/*' "
command=$(/usr/bin/7z a $lst1 -v2048M arch0.7z /home/user);
$command
也,最後兩行可以很容易地用單線取代
command="/usr/bin/7z a $lst1 -v2048M arch0.7z /home/dh ;"
我接收'arch0.7z'文件,但文件夾.config和.cache仍然包含在內,而:
#!/bin/bash
find /home/user -type f -name "*.pdf" | cut -c 10- > /home/user/exclude_list2.lst;
/usr/bin/7z a [email protected]/home/user/exclude_list2.lst -xr!'*.config/*' -xr!'*.cache/*' -v2048M arch0.7z /home/user ;"
用正確排除的文件夾生成文件。
所以,我想,就是從變量擴大了線的區別是:
/usr/bin/7z a $lst1 -v2048M arch0.7z /home/user
和一個我一直類型爲是:
/usr/bin/7z a [email protected]/home/user/exclude_list2.lst -xr!'*.config/*' -xr!'*.cache/*' -v2048M arch0.7z /home/user
沒有任何理由這樣7z工作流程的重大變化?
http://mywiki.wooledge.org/BashFAQ/050不要試圖在變量中加引用的字符串。它不起作用。將這些參數放在數組中,它可能會工作。另請參閱兩個腳本的'set -x'輸出,您應該看到不同之處。 – 2014-09-24 03:26:03