1
我有這個慶典函數,它接受文件作爲參數:bash的功能 - 帶有空格的文件名作爲參數
txz()
{
file_in=${@:1:$#-1}
file_out=${@: -1}
echo "file_in=${file_in}"
echo "file_out=${file_out}"
tar -cvf - ${file_in} | xz -e9zf - > "${file_out}"
}
的功能必須有至少2個參數來調用。最後一個參數始終是存檔名稱,其餘參數是要壓縮的文件。該功能的工作,因爲它應該當我在他們的名字一樣調用它的文件不帶空格:
txz File1 File2 archive.tar.xz
但它失敗蒙山:
txz "File 1" "File 2" archive.tar.xz
file_in=File 1 File 2
file_out=archive.tar.xz
tar: File: Cannot stat: No such file or directory
tar: 1: Cannot stat: No such file or directory
tar: File: Cannot stat: No such file or directory
tar: 2: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
我還試圖創建一個數組,但它不工作要麼:
txz()
{
file_in=(${@:1:$#-1})
file_out=${@: -1}
echo "file_in=${file_in[@]}"
echo "file_out=${file_out}"
tar -cvf - "${file_in[@]}" | xz -e9zf - > "${file_out}"
}
我應該如何創建函數,因此它適用於所有文件名?