2014-04-06 106 views
1

我正在制作一个小脚本,它将zipps文件复制到另一个目录。但是,当我执行它;该文件被拉链,但在复制它给了以下错误:关于脚本需要确认

cp: missing destination file operand after /home/centoslive/Desktop/new 

下面是我的脚本

#!/bin/bash 

file=$(gzip jawad.txt) 

cp $file /home/centoslive/Desktop/new 

回答

3

的问题是该行:

file=$(gzip jawad.txt) 

捕获的gzip输出到stdout纳入变量file。如果gzip成功,它将写入文件jawad.txt.gz,但它在stdout上不会生成输出,因此file变量将为空。

那么你cp线(空$file膨胀后)看起来像:

cp /home/centoslive/Desktop/new 

这是缺少cp认为目标要复制/home/centoslive/Desktop/new到。

相反,你可能只想做:

cp jawad.txt.gz /home/centoslive/Desktop/new 

你可能会考虑这样的:

src=jawad.txt 
dst=/home/centoslive/Desktop/new 

if gzip $src; then 
    cp $src.gz $dst 
fi 

这样,你只能做拷贝,如果gzip成功。您可以将else放在那里以处理失败时的情况。