Linux
Linux shell 腳本“沒有這樣的文件或目錄”
我創建了一個 shell 腳本來完成 3 個簡單的任務(壓縮目錄、重命名最終文件並刪除源目錄)。腳本源碼如下:
#!/bin/bash if [[ $2 == *"/data/"* ]] then src= $2"/*"; dest= $1".zip"; # Just for test echo $src; # Commented for now #zip -r -j $dest $src #mv $dest $1 #rm -rf $2 else echo "Invalid arguments"; fi
當我使用這些參數執行上面的腳本時,出現錯誤:
./scriptzip.sh /data/file-new /data/file-old ./scriptzip.sh: line 4: /data/file-old/*: No such file or directory ./scriptzip.sh: line 5: /data/file-new.zip: No such file or directory
如何防止 shell 為“類似目錄”的字元串測試變數?有什麼辦法可以跳過嗎?
空間在 shell 中很重要,因為這就是在命令中劃分標記的原因,例如
echo foo bar
or更糟rm -rf /some/where /
。因此,賦值不能在 : 周圍包含空格=
:foo=/etc/* echo $foo
變數可能還需要引用,具體取決於您希望在此處進行全域擴展和分詞(不正確的分詞
rm
可能導致意外(和搞笑)文件系統清理)。echo "$foo"