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或者更好的是,首先不要输入变量或类似内容。

相关内容