Bash
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/
這裡發生了什麼?
問題是,
~
當您將其輸入為read
.測試它:
$ read target ~ $ ls $target ls: cannot access '~': No such file or directory
(注意,周圍的引號
~
)eval target=$target # unsafe
或更好,但僅擴展
~
:target="${target/#\~/$HOME}"
甚至更好的是,一開始就不要輸入變數或類似
read
的東西。