だから私は何時間もこの問題を直接解決しようとしましたが、問題のあるコードブロックではありませんでした。変更して書き直し、各行の後にエコーを「実行」しようとしましたが、うまくいかないようです。 。ゲーム内の特定のイベントのCSVファイルを復号化するために使用されるコード。必要に応じて、完全なコードは次のようになります。https://pastebin.com/Gv3Fvyxy
for path in $(find assets -name "*.csv")
do
f=$(echo "$path" | rev | cut -d"/" -f1 | rev)
(
dd if=$path bs=1 count=9 status=none
dd if=/dev/zero bs=1 count=4 status=none
dd if=$path bs=1 skip=9 status=none
) | lzma -dc -f > "decrypted/"$f
done
ベストアンサー1
このスクリプトの拡張バージョン:
#!/bin/bash
find assets -name '*.csv' -exec bash -c '
f="$(awk '{print $NF}' <<< "$1")"
{
dd if="$1" bs=1 count=9 status=none
dd if=/dev/zero bs=1 count=4 status=none
dd if="$1" bs=1 skip=9 status=none
} | lzma -dc -f > "decrypted/$f"
' -- {} \;
- 名前にスペースがあるファイルの処理
rev|cut|rev
簡素化アッ- より多くの引用符を使用してください!
シェルから正しく引用する方法を学ぶことは非常に重要です。
スペース/メタ文字を含むすべてのリテラルは「二重引用符」として扱われます。すべて拡張:
"$var"
、、、、。"$(command "$var")"
コードやテキストについてはを参照してください。"${array[@]}"
"a & b"
'single quotes'
$'s: 'Costs $5 US'
ssh host 'echo "$HOSTNAME"'
http://mywiki.wooledge.org/Quotes
http://mywiki.wooledge.org/Arguments
http://wiki.bash-hackers.org/syntax/words