Bash

cp 命令說目錄不存在

  • May 29, 2019

我正在編寫一個 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的東西。

引用自:https://unix.stackexchange.com/questions/521765