我有一个bash脚本,可以生成一堆文件。但是我希望我的文件是gzip。我编写脚本的方式会产生带有* .gz扩展名的文件。但是,当我使用命令
检查它是否为gzip时gzip -l hard_0.msOut.gz
它说 gzip:hard_0.msOut.gz:不是gzip格式
我的bash脚本是:
#!/bin/bash
#generating training data
i_hard=0
i_soft=0
i_neutral=0
for entry in /home/noor/popGen/sweeps/slim_script/singlePop/*
do
if [[ $entry == *"hard"* ]]; then
echo "It's there!"
/home/noor/popGen/build/./slim $entry > /home/noor/popGen/sweeps/msOut/singlePop/hard_$i_hard.msOut.gz
i_hard=$((i_hard+1))
fi
if [[ $entry == *"soft"* ]]; then
echo "It's there!"
/home/noor/popGen/build/./slim $entry > /home/noor/popGen/sweeps/msOut/singlePop/soft_$i_soft.msOut.gz
i_soft=$((i_soft+1))
fi
if [[ $entry == *"neutral"* ]]; then
echo "It's there!"
/home/noor/popGen/build/./slim $entry > /home/noor/popGen/sweeps/msOut/singlePop/neutral_$i_neutral.msOut.gz
i_neutral=$((i_neutral+1))
fi
done
有人可以告诉我如何使用我制作的bash脚本生成gzip文件。
答案 0 :(得分:1)
您正在将值输出到名为something.gz的文件中,但这并不意味着它已压缩。这只是意味着您选择的文件扩展名为.gz。
要gzip输出,请添加以下示例:
echo "compress me" | gzip -c > file.gz
以上将获取echo的输出并将其通过管道传输到gzip(-c将发送到stdout)并将stdout重定向到名为file.gz的文件
您的完整代码:
#!/bin/bash
#generating training data
i_hard=0
i_soft=0
i_neutral=0
for entry in /home/noor/popGen/sweeps/slim_script/singlePop/*
do
if [[ $entry == *"hard"* ]]; then
echo "It's there!"
/home/noor/popGen/build/./slim $entry | gzip -c > /home/noor/popGen/sweeps/msOut/singlePop/hard_$i_hard.msOut.gz
i_hard=$((i_hard+1))
fi
if [[ $entry == *"soft"* ]]; then
echo "It's there!"
/home/noor/popGen/build/./slim $entry | gzip -c > /home/noor/popGen/sweeps/msOut/singlePop/soft_$i_soft.msOut.gz
i_soft=$((i_soft+1))
fi
if [[ $entry == *"neutral"* ]]; then
echo "It's there!"
/home/noor/popGen/build/./slim $entry | gzip -c > /home/noor/popGen/sweeps/msOut/singlePop/neutral_$i_neutral.msOut.gz
i_neutral=$((i_neutral+1))
fi
done