我正在编写一个小文件,然后将文件复制到另一个文件。但是当我执行它时;文件被压缩但在复制时会出现以下错误:
cp: missing destination file operand after /home/centoslive/Desktop/new
以下是我的剧本
#!/bin/bash
file=$(gzip jawad.txt)
cp $file /home/centoslive/Desktop/new
答案 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
来处理失败的情况。