- PR -

Shellスクリプト入門

1
投稿者投稿内容
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2002-12-09 17:02
 お世話になります。ただいまShellスクリプト入門中です。
--------------------------
#!/bin/sh
command1 && command2
--------------------------
の場合、command1が成功したらcommand2を実行する。

--------------------------
#!/bin/sh
command1 || command3
--------------------------
の場合、command1が失敗したらcommand3を実行する。

ですが、command1が成功したらcommand2を実行して失敗したらcommand3を実行したいと思います。

 どのように書けばよろしいのでしょうか。是非ご教授願います。
yuu
大ベテラン
会議室デビュー日: 2002/06/12
投稿数: 152
お住まい・勤務地: 美味しいケーキ店のそば
投稿日時: 2002-12-09 17:24
こんにちは。

Shell スクリプトにも 他のコンピュター言語同様に if 文が あります。それを使えば
okumura さんが望んでる事が出来ます。

あとは、man をみるとか ネットを検索して調べて下さい
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2002-12-09 17:32
ご返答ありがとうございます。

if [ command1が成功 ]
then
command2
else
command3
fi

とする場合、「command1が成功した」 という状態を表現するにはどうすればよいのでしょうか。。
こつぶ
常連さん
会議室デビュー日: 2002/11/11
投稿数: 47
投稿日時: 2002-12-09 17:34
こんにちは。

「終了ステータス」って調べたら出てくると思います。

失礼しました。
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2002-12-09 18:33
 useraddコマンドが成功したら・・・という例で行ってみなした。

----------------------------------
if useradd -G mygrp1 user01
then
command2
else
command3
fi
----------------------------------
これで成功しました。ありがとうございました。

 また、実際に終了ステータスを標準出力に表示してみたいと思うのですが、うまくいきませんでした。どうすれば表示されますでしょうか。

 また、コマンドの終了ステータスを使用してコマンドの失敗や成功後の処理を書くときに、だいたい皆様もこのようにされておられるのでしょうか。「いやいや、普通そうはしないよ。」というご意見のある方は是非ご返信ください。よろしくお願いいたします。
tabby
ベテラン
会議室デビュー日: 2002/06/26
投稿数: 55
お住まい・勤務地: 埼玉県・東京都
投稿日時: 2002-12-09 18:47
最後に実行したコマンドの終了コードしか保持していないので、
コマンドを実行した直後に見ないと上書きされてしまいます。

試してみたところ、何も気にせず echo $? で取れるようです。

一応、各シェルごとの変数名?を書いておきます。
sh
echo $?

csh系
echo $status

bash
echo $PIPESTATUS
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2002-12-09 19:18
 なるほど。解決いたしました。たくさんのキーワードをありがとうございました。これからもよろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)