关于脚本需要确认

时间:2014-04-06 09:44:39

标签: bash

我正在编写一个小文件,然后将文件复制到另一个文件。但是当我执行它时;文件被压缩但在复制时会出现以下错误:

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

以下是我的剧本

#!/bin/bash

file=$(gzip jawad.txt)

cp $file /home/centoslive/Desktop/new

1 个答案:

答案 0 :(得分: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来处理失败的情况。