プロが教えるわが家の防犯対策術!

シェルスクリプトでメニュー選択画面より選択してコマンドを実行して結果を表示する。
エンターキーを押して再度メニューに戻る。
そういうスクリプト作成したいのですがうまくいきません。
下記では何が誤っていて不足しているのでしょうか? 正しい構文を教えて下さい。
・・・誤りばかりと思いますがすいません。

#!/bin/bash

PS3="メニューを選択して下さい。"

select ans in "$ans1" "$ans2" "$ans3" "終了!"; do

$ans1="ifconfig"
$ans2="df "
$ans3="netstat "

if [ -z "$ans1" ]; then
echo " $ans1."
read ifconfig
clear; while :; do echo -n "^[[1;1H"; ifconfig ; sleep 1; done
if [ -z "$ans2" ]; then
echo " $ans2."
read df
clear; while :; do echo -n "^[[1;1H"; df ; sleep 1; done
if [ -z "$ans3" ]; then
echo " $ans3."
read netstat
clear; while :; do echo -n "^[[1;1H"; netstat ; sleep 1; done
else
break
fi
case "$ans" in
"終了!")
break;;
"")
echo "終了";;
*)

esac
done

echo "Good bye."

A 回答 (1件)

ぼろぼろで、何をしたいのか不明なので、部分的な指摘だけになります。



ifに対してのfiが足りません。
if ~
then ~
fi
か、
if ~
then ~
else ~
fi
のようにしてください。

あと、
select ans in "$ans1" "$ans2" "$ans3" "終了!"; do

$ans1="ifconfig"
$ans2="df "
$ans3="netstat "
は、おそらく、

ans1="ifconfig"
ans2="df "
ans3="netstat "
select ans in "$ans1" "$ans2" "$ans3" "終了!"; do

また、
if [ -z "$ans1" ]; then
なども間違っていると思われますが、何をしたいのか不明なので、どう変えれば良い物か。

正直、「代入」とか「条件判断」の意味すらわかっていない人が書いたように見えます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!