一致する""の検索中に予期しないEOFが発生しました。

一致する""の検索中に予期しないEOFが発生しました。

フォーラムで英語で話して申し訳ありません。オレンジパイコンピュータで低クロックを無効にする方法を見つけました。

 #!/bin/bash 

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 

if [ "$(id -u)" != «0» ]; then 
echo «This script must be executed as root. Exiting» >&2 
exit 1 
fi 

Fex2Bin="$(which fex2bin)" 
if [ «X${Fex2Bin}» = «X» ]; then 
apt-get -f -q -y install sunxi-tools 
fi 

Path2ScriptBin="$(df | awk -F" " '/^\/dev\/mmcblk0p1/ {print $6}')" 
if [ ! -f "${Path2ScriptBin}/script.bin" ]; then 
echo «Can not find script.bin. Ensure boot partition is mounted» >&2 
exit 1 
fi 

MyTmpFile="$(mktemp /tmp/${0##*/}.XXXXXX)"
trap «rm \»${MyTmpFile}\"; exit 0" 0 1 2 3 15 

bin2fex <"${Path2ScriptBin}/script.bin" | grep -v "^LV" | grep -v "^max_freq" | grep -v "^min_freq" | grep -v "^extremity_freq" >"${MyTmpFile}" 
if [ $? -ne 0 ]; then 
echo «Could not convert script.bin to fex. Exiting» >&2 
exit 1 
fi 
cp -p "${Path2ScriptBin}/script.bin" "${Path2ScriptBin}/script.bin.bak" 

sed -i '/\[dvfs_table\]/a \ 
extremity_freq = 1296000000\ 
max_freq = 1200000000\ 
min_freq = 480000000\ 
LV_count = 7\ 
LV1_freq = 1296000000\ 
LV1_volt = 1320\ 
LV2_freq = 1200000000\ 
LV2_volt = 1240\ 
LV3_freq = 1104000000\
LV3_volt = 1180\ 
LV4_freq = 1008000000\ 
LV4_volt = 1140\ 
LV5_freq = 960000000\ 
LV5_volt = 1080\ 
LV6_freq = 816000000\ 
LV6_volt = 1020\ 
LV7_freq = 480000000\ 
LV7_volt = 980' "${MyTmpFile}" 

fex2bin "${MyTmpFile}" "${Path2ScriptBin}/script.bin" >/dev/null 
if [ $? -ne 0 ]; then 
mv "${Path2ScriptBin}/script.bin.bak" "${Path2ScriptBin}/script.bin" 
echo «Writing script.bin went wrong. Nothing changed» >&2 
exit 1 
fi 

echo «Successfully repaired broken overvolting/overclocking settings. Reboot necessary for changes to take effect»

このエラーが発生しました。

./fix.sh: line 53: unexpected EOF while looking for matching `"'
./fix.sh: line 59: syntax error: unexpected end of file

問題を解決するのに役立ちますか?これは私の台本ではありません。

答え1

UnixとLinux StackExchangeへようこそ!

./fix.sh: line 53: unexpected EOF while looking for matching `"'

このエラーメッセージは、シェルが二重引用符の問題を検出したスクリプトの53行目を示すため、トリッキーである可能性があります。通常、実際のエラーはどこかに欠落している二重引用符です。それの前に

投稿のコード形式がすでに役に立っています。アップロードしたコードでは、"最初は二重引用符()内の内容のみが赤で表示されていますので、参考にしてください。しかし、この行の後に他のすべて赤に変わり、二重引用符内の内容は黒または青になります。

trap «rm \»${MyTmpFile}\"; exit 0" 0 1 2 3 15

カラースキームの変更は、その行にペアのない二重引用符(バックスラッシュでエスケープされていない)があることを意味します。«...スタイルの引用符から標準の二重引用符への»不完全な変換のように見えます。

この行はおそらく次のようになります。

trap "rm \"${MyTmpFile}\"; exit 0" 0 1 2 3 15

スクリプト内のすべての...スタイル引用符«も通常の二重引用符に変換する必要があります。»

スクリプトを作成するときは、通常の一重引用符または二重引用符を任意の種類の「スマート引用符」に置き換えるエディタを使用しないでください。これらの置換は通常スクリプトを破損します。編集者がこれを行う場合は、スマート引用機能をオフにする方法を学びます。


./fix.sh: line 59: syntax error: unexpected end of file

メッセージは59行目に問題があることを示していますが、スクリプトには58行目しかありません。だから問題はスクリプトの最後にあります。スクリプトの最後の行にはペアのない引用符があり、それを修正する必要があります。

関連情報