ディレクトリ内のファイルを処理するためのシェルスクリプト

ディレクトリ内のファイルを処理するためのシェルスクリプト

私はWindowsシステムを使用しているので、Linux / unixコマンドを実行するのに役立つcygwinをダウンロードしました。シェルスクリプト(スクリプトのインポート)を実行する必要があります。ここ)。

スクリプトは次のとおりです。

#!/bin/bash
cd $1

for filename in *.apk
do
    unzip -d $filename.extract $filename META-INF/CERT.RSA
    if [ -f $filename.extract/META-INF/CERT.RSA ]
        then
        mkdir `keytool -printcert -v -file $filename.extract/META-INF/CERT.RSA|grep SerialNumber| cut -c 19-23`
        mv $filename `keytool -printcert -v -file $filename.extract/META-INF/CERT.RSA|grep SerialNumber| cut -c 19-23`/$filename
        mv `echo $filename | sed 's/\(.*\.\)apk/\1odex/'` `keytool -printcert -v -file $filename.extract/META-INF/CERT.RSA|grep SerialNumber| cut -c 19-23`/`echo $filename | sed 's/\(.*\.\)apk/\1odex/'`
        rm -rf $filename.extract
    else
        mkdir none
        mv $filename none
        mv `echo $filename | sed 's/\(.*\.\)apk/\1odex/'` none
        rm -rf $filename.extract
    fi
done;

mkdir other
mv * other
mv other/b399 platform
mv other/f2a7 shared
mv other/f2b9 media
mv other/936e test

端末でコマンドを実行しましたが、sh cert.sh次のエラーが発生します。

ここに画像の説明を入力してください。

奇妙なことは、cert.sh -スクリプトを実行するとapkが実行されて別のフォルダに分割されますが、シェルスクリプトを実行する正しいコマンドがあるため、正しく実行されるかどうかはわかりませんsh cert.sh

ベストアンサー1

スクリプトを実行するには1つのパラメータが必要です。このパラメータは、そのパラメータが配置されているディレクトリです*.apk

パラメータはスクリプトから1行ずつ呼び出されcd $1、これはシェルスクリプトでパラメータが呼び出される方法です。

次のようにスクリプトを再実行してみてください。sh cert.sh </path/where/apks/reside>問題が解決するかどうか確認しますか?

また、既存のフォルダに関連するエラーを削除するには、ループの前に行をfor追加してください。rm -rf otherrm -rf none

おすすめ記事