アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちわ。

当方、linux初心者です。
今if文を作っているのですが、どうしてもうまくいきません。
●lsで出力した結果が何行出力されたかによって回答が変わるシェルを作成してください。(10以上と9~3と2以下の3種類)

という例題を解答中ですが、下記のとおり作ったのですが
何かアドバイスは頂けませんか?
お願い致します。
#!/bin/bash

ls -l > case.txt

P=`cat case.txt | wc -l`

if $P -ge 10 then
echo '10以上'

elif $P -ge 3 ; then
echo '3以上'

elif $P -le 2 ; then
echo '2以下'

fi

A 回答 (3件)

if [ $P -ge 10 ]; then


ちなみにこの [ は単なる括弧ではなく組み込みコマンドです。
コマンドなので [ の前後にスペースが必要です。
でも私は
if test $P -ge 10; then
の書き方が間違いがなくて好きです。
    • good
    • 0
この回答へのお礼

ありがとうございます!

[]つけたら表示されました♪

また、testを使った方法もあるのですね!
勉強します!

本当に有難うございました!

お礼日時:2009/04/14 13:08

うまくいかないのはif文かな。


条件式は[]で括った方がいいよ。
if [ $P -ge 10 ]; then
気をつけるのは括弧と条件式の間にspaceをいれること。
あと、最後のelifはelseでもいいかもね。
    • good
    • 0
この回答へのお礼

ありがとうございます!

[]つけたら表示されました♪

本当に有難うございました!

お礼日時:2009/04/14 13:07

検索したところbashのif構文は


if [ 値1 比較演算子 値2 ];then
実行文
fi
とのことで [ ] と ; が無いのが原因ではないでしょうか
    • good
    • 0
この回答へのお礼

ありがとうございます!

[]つけたら表示されました♪

本当に有難うございました!

お礼日時:2009/04/14 12:31

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