bashコマンドでネストされたif/elseステートメントに問題があります。コードの最初のセットは完全に機能しましたが、前にread -p
セクションに追加すると、何かがスローされました。シェルスクリプトネストされた場合/ Elseステートメント
動作するコード:
#!/bin/bash
(
echo p
echo q
) | sudo fdisk $1
if [ ! -d "$2" ]; then
if [ -f "$2" ]; then
echo "$2 exists and is not a directory"
exit 1
else
mkdir "$2"
fi
fi
function mountDisk()
{
sudo mount -o loop,offset=$((2048*512)) $1 $2
}
mountDisk $1 $2
をだから、これがうまく働いたが、fdiskの情報を表示し、フォルダを作成し、ドライブをマウントするために実施しました。
情報を与えられた後にマウントを続行するオプションを追加すると、問題が発生しました。 (それが不要とみなされたように-fを取り出した)
コードの変更された部分である:私は最初に、いくつかの異なるバージョンを試みた
read -p "Mount $1 ?" $3
if [ "$3" = "Yes" ]; then
if [ ! -d "$2" ]; then
echo "$2 exists and is not a directory"
exit 1
else
mkdir "$2"
fi
else
exit 1
fi
回線IF([$ 3 ==「はい"]が最初のものです)。しかし、多くの場合、主に単項演算子が期待されるエラーが発生しました。
問題は、現在はエラーが発生していないことです。フォルダを作成したりドライブをマウントしたりすることなく、プログラムを終了してプログラムを終了するように見えます。
私はこれをオンラインで調査するのに多くの時間を費やしており、問題を修正することができませんでしたので、アドバイスをいただければ幸いです。
は、 '$ 3'以外のいくつかの名前を使用する必要があります。 –