現在、次のスクリプトを作成しています。このコードは、ユーザーがディレクトリに入力したファイル名を探します。スクリプトはまず入力ファイルがgzipであることを確認し、そうであれば適切な確認を実行します。ファイルがgzipに圧縮されていない場合、互換性のないファイルテキストが返されます。
私が経験している問題はオンラインです7
。ファイル拡張子に関係なく、最終出力と互換性のないファイルが受信されます。
#!/bin/bash
DATE=$(date +%Y-%m-%d)
L0_Report_Generator=("/home/ubuntu/$gzip_file")
echo -n "Enter File Directory:"$gzip_file
read $gzip_file
for gzip_file in {$L0_Report_Generator}; do
if [[ $gzip_file = "test_sub"*"gz" ]] #Check file extension for gzip compression
then
gunzip $gzip_file
echo "file Level 0 QC Check"
echo ${DATE}
echo "File Header"
cat $gzip_file | head
echo "Total Records"
cat $gzip_file | wc -l
echo "File Unique Records Size"
cat $L0_Report_Generator | sort -u | wc -l
rm $gzip_file
else [[ $gzip_file != "test_sub"*"gz" ]] #If file is anything other than .gz and csv - rort will not run
then
echo "incompatible file"
fi
done
ベストアンサー1
ifステートメントでワイルドカード式を使用して ".gz"ファイル拡張子を確認するには、次の式を使用できます。
if [[ "${gzip_file}" = *.gz ]]; then echo true; else echo false; fi
次の方法でこれをテストできます。
if [[ "file.gz" = *.gz ]]; then echo true; else echo false; fi
そして:
if [[ "file.txt" = *.gz ]]; then echo true; else echo false; fi
最初の例ではtrue
出力を生成し、2番目の例では出力を生成しますfalse
。
それでは、コードを見てみましょう。 if文には次の条件式があります。
[[ $gzip_file = "test_sub"*"gz" ]]
具体的には、一致パターンの部分文字列として「test_sub」が含まれます。削除してみてください。