cp 指令說目錄不存在

cp 指令說目錄不存在

我正在編寫一個 bash 腳本,並在其中執行以下操作:

#!/bin/sh
read -p "Enter target directory: " target_dir
cp some/file.txt $target_dir/exists/for/sure/

當我運行這個 shell 腳本時,我看到並輸入:

./my_script.sh
Enter target directory: ~/my_dir

但我得到錯誤/輸出:

cp: directory ~/my_dir/exists/for/sure/ does not exist

而且,正如我試圖表明的那樣:該目錄 100% 存在。即我可以運行以下命令而不會收到任何錯誤:

cd ~/my_dir/exists/for/sure/

這裡發生了什麼事?

答案1

問題是,~當您將其作為 的輸入鍵入時,它是按字面意思理解的,並且不會擴展read

測試一下:

$ read target
~
$ ls $target
ls: cannot access '~': No such file or directory

(注意,周圍的引號~


用這個:

eval target=$target # unsafe

或更好,但只是擴展~

target="${target/#\~/$HOME}"

read或者更好的是,首先不要輸入變數或類似內容。

相關內容