質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Q&A

解決済

3回答

838閲覧

ディレクトリの中に該当拡張子ファイルがないときのエラー処理方法を教えてください

退会済みユーザー

退会済みユーザー

総合スコア0

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

0グッド

1クリップ

投稿2021/06/21 02:15

シェルスクリプトについての質問です。
ディレクトリの中に拡張子が.sqlファイルがあった時に、
その.sqlファイルに対してのみ処理が行われるシェルを作成しています。

ディレクトリの中に拡張子が.txtや.logのファイルが存在するが、
拡張子が.sqlのファイルは存在しない場合に、”.sqlファイルは存在しません”という
エラー処理をしたいのですがどのように描けばいいのかわからず行き詰まっています。

for file in `¥find $dir -name '*.sql'`: do read -p "enter filename:" filename sed -e "s/^M//" $file > $filename done

初心者ゆえ質問の仕方に至らぬ点が多いと思いますがその分も含めお教えいただけます幸いです。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/06/21 03:34

> for file in `¥find ... のfindコマンドの頭の'\'は意図的に入れたものでしょうか。(入っていても実行できるようですが)
guest

回答3

0

カレントディレクトリーに、.sqlの拡張子のファイルがあるかどうかと言うことなら、

sh

1if [ "$(echo *.sql)" = "*.sql" ] 2then echo .sqlが拡張子のファイルが無かった 3else echo .sqlが拡張子のファイルが有った "($X)" 4fi

なお、シェルがzshの場合は、これの前にunsetopt nomatchが必要。

投稿2021/06/21 04:22

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ループ処理に入る前に当該条件に合致するファイルが存在するか否か調べればよいと思います。
ファイルが存在するならループへ、存在しないならエラーメッセージ出力などの処理に進むというように書けばいいのではないでしょうか。

ファイルの存在確認でワイルドカードを使う - Qiita

投稿2021/06/21 03:43

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/06/21 04:24

おっしゃる通り、ループ処理に入る前に調べるべきでした。 まだまだ考え方の柔軟性が足りないですね。。。 回答ありがとうございました!
guest

0

ベストアンサー

色々考えられますが、例えばtestコマンドで存在確認するとかでしょうか。

投稿2021/06/21 02:39

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/06/21 03:06

コメントありがとうございます。 ifで試してみたのですが、ディレクトリの中のファイル検索という部分に引っかかっていて、 []内をどのように書けば良いのかわからない状態です。 for file in `¥find $dir -name '*.sql'`: do  if [ ! -e $name -name '*.sql' ]; then echo エラーメッセージ exit 2 if read -p "enter filename:" filename sed -e "s/^M//" $file > $filename done 上記ではエラーが出てうまく行きませんでした。 コマンドの使い方がいまいちわかっていなくてすみません。。。
itagagaki

2021/06/21 03:54 編集

こういうことではないですか? sqlfiles=`find $dir -name '*.sql'` if test -z "$sqlfiles"; then echo ".sqlファイルは存在しません" exit 2 fi for file in $sqlfiles do . . . あ、それとも、もしも、$dir以下のサブディレクトリごとに、そこに*.sqlファイルがあるかどうかを調べたいのだとしたら、サブディレクトリをたどって行って、サブディレクトリ毎に上記のように処理するスクリプトを書く必要がありますね。
m.ts10806

2021/06/21 03:52

itagagakiさんのとおりです。 findの前にtestでチェックし、引っ掛かればexit
退会済みユーザー

退会済みユーザー

2021/06/21 04:21

お二人とも、ご丁寧にありがとうございます。 おかげさまでエラー処理ができました! ディレクトリの中からsqlファイルだけを取り出してそこから forで処理をするという考え方ができていませんでした。 とてもわかりやすくお教えいただきありがとうございました!
m.ts10806

2021/06/21 04:28

いえあの、はじめから取り出す前にチェックしようという話をしているのですけど。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問