[過去ログ] ☆シェルスクリプトを勉強するにあたって☆ (956レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(5): あらん 2001/05/12(土)18:32 AAS
シェルスクリプトを勉強しようと、思い様々な検索をかけてみて、
Windowsでいう、バッチファイルの高級バージョンという、事と、
主に、3種類のバージョンがあることは、わかりました。
しかし、肝心の勉強する本が見つかりません。みなさんは、
どのようにして、学ばれたのでしょうか。
オススメの、HP、本等ありましたら、お願いします。
937: 04/10/28 16:27 AAS
>>936
じゃechoとリダイレクトでw
938: 04/10/28 16:33 AAS
binary モーどで送ればいいじゃないの。a
939: 04/10/28 18:14 AAS
というかだ。
924は勉強しろ。
いろいろと
940
(1): 04/10/29 09:41 AAS
ところでちょっと聞きたいんだけど、自分はスクリプト書くときに変数は囲め
るときはなるべく "" で囲むようにしてるんだけど変ですかね…。
941
(1): 920 04/10/29 15:45 AAS
ls -al |
などでパイプを通ってきた文字列に"abcd"という文字列がふくまれているかどうか
テストしたいのですがどうしたらいいでしょうか?
あるいはパイプを通ってきた文字列をなにか変数に格納する方法などありましたら
おしえてください。
942: 04/10/29 16:10 AAS
>>941
`
943
(1): 04/10/29 16:15 AAS
ls -al|grep abcd
944: 04/10/29 16:34 AAS
>>940
いいことだと思う。

囲んでないと、
スペースを含んでたりしたときにおかしな動作になることがある。
対処方はいろいろあるんだろうけど。
945
(4): 920 04/10/29 17:29 AAS
>>943
レスありがとうございます

ls -al | grep abc | test --(なんとか)&& echo succeed

みたいなことをやりたいのですが、このテストの部分でなにかいい方法がない
でしょうか

ls -al | grep abc > testfile ; test -s <testfile && echo exist

とファイルに落とすとうまくいくのですが、直接受け渡しはできないでしょうか。
946
(1): 04/10/29 17:41 AAS
if ls -al|grep abc  >/dev/null 2>/dev/null ; then
    echo succeed
fi
947
(1): 04/10/29 17:42 AAS
>>945
それから、testは標準入力は読まないと思うから、
test -s testfile && echo exist
948
(1): 04/10/29 18:19 AAS
だから`つかえって
var=`ls -al`
でコマンドの出力を変数に代入できる。
949: 945 04/10/29 18:40 AAS
>>946,947,948
ありがとうございます。おかげさまでスクリプトがだいぶんすっきりと
まとまっていきそうです。

ところで
if ls -al|grep abc >/dev/null 2>/dev/null ; then
echo succeed
fi

これでうまくゆくのですが、どうしてうまくゆくのかわかりません。
どこでtestしているのですか?
>/dev/null 2>/dev/null と続けて/dev/nullに上書きしているようにおもえるのですが。
950
(1): 04/10/29 18:53 AAS
if は次に記述されるコマンド(正確にはパイプライン・・コマンドをパイプで連結したもの)
のリターンコードを見てる。
testは引数の結果でリターンコード変えてるんだよ。
951
(2): 945 04/10/29 19:18 AAS
>>950
なんどもありがとうございます。

|grep > /dev/null
のところでなにか/dev/nullに送られたかどうかをtestしているという理解でいいでしょうか?
二つ目の
2>/dev/null
は必要なものでしょうか。
952: 04/10/29 20:10 AAS
>>951
chmod 000 /dev/null とかやって見れば?
953
(1): 04/10/29 21:00 AAS
>>951
>のところでなにか/dev/nullに送られたかどうかをtestしているという理解でいいでしょうか?
だめです。
grepは文字列が見つかれば0を返し、そうでなければ1を返します。
954: 04/10/29 21:04 AAS
返事が返ってきた    返事が返ってきた
    ↓             ↓
鸚鵡返しに質問      ちょっと調べてみる(考えてる)
    ↓             ↓
  ありがとう         ありがとう
955: 945 04/10/29 21:38 AAS
>>953
>/dev/null 2>/dev/null を消したスクリプトで試してみて
意味が納得できました。
ほんとにありがとうございました。
956: 04/10/29 22:19 AAS
コマンドラインからgrepやってみて
echo $?
とやりゃ分かる
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.150s*