Linux
Bash 腳本到 tar – 引用問題
我有一個將文件名作為位置參數的腳本。我對這些執行一些操作,然後對它們進行 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)周圍使用雙引號,因為我想處理帶空格的文件。
如果我要刪除腳本中的引號 ("),它會起作用,但我無法處理帶有空格的文件名。
有任何想法嗎?
如果您總是使用所有參數,那麼只需
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[@]}"