shell脚本:追加目录路径和文件名

时间:2014-07-24 08:17:11

标签: linux shell

我想使用shell脚本

从目录中复制文件

假设我将目录和文件名单独保存为

dir=/home/user/directory/
file=file_1

在我的脚本中使用此命令复制文件Im

cp $dir$file .

但是我收到了这个错误

/bin/cp omitting directory '/home/user/directory'

我尝试了所有组合,例如。从变量dir等中省略了跟踪backslah,但没有工作。我无法理解这段代码有什么问题。请求帮助

也许命令$dir$file没有在shell中解压缩(即只有目录变量被解压缩,而不是文件变量)!!!!!

2 个答案:

答案 0 :(得分:0)

看起来您在cp $dir$file .中遇到扩展问题为了防止出现问题,最好用大括号保护您的变量并双引号完整路径/文件,以确保您不会出现问题。在文件名或天堂中被空格捕获,禁止用户的名字:

cp "${dir}${file}" .

这样可以防止错过第二个$。另外请确保您具有对其他用户/家庭的读取权限(如果您是root用户或使用sudo,那么您应该没问题)

答案 1 :(得分:0)

如果你看到这个,当你以某种方式将空字符串分配给某个地方的file时。在您的脚本中搜索file=unset file

您也可以通过添加

来调试它
echo ".${file}."

cp命令之前的行中。我很确定它打印..,即变量是空的或不存在。