プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。何度もすみません。また質問させて下さい。
RedHat7.0でシェルスクリプトを作成しているのですが、
初心者の為(Linux自体よくわかってません)悪戦苦闘中です。

今回つまづいたのは、

#!/bin/bash

FName=/home/my/aaa.txt
read str1 str2 str3 <$FName

とした時、まず、実行している場所が
/tmp
な為、FNameに/home/myとやるとファイルがありません、
と言われてしまいます。
../home/myでもだめなんですね~・・・どうしてでしょう・・・。

もうひとつ、
aaa.txtの中身に記述されているデータが、空白区切りの時は
うまくstr1 str2 str3に値が入ってくれるのですが、
カンマ区切りデータが入っていると値が入ってくれません。
自分なりに調べて-dを使うと出来るっぽい所までは
わかったのですが、具体的な使い方がいまいちわからないのです。
read str1 str2 str3 <$FName -d,
なんて書いてみたのですが・・・全然だめのようです。
なかなか良いサンプルコードが見つからなくて・・・。

すみませんが、アドバイスいただけたら、と思います。
宜しくお願いいたします。

A 回答 (1件)

またお会いしましたね。

では、早速。

> FNameに/home/myとやるとファイルがありません

フルパスで書いているのですから、実行している位置には関係ないです。
怪しいのは、読み込もうとしているファイル周りの権限。

/home/my/aaa.txt から中身を読み込む為には、実行ユーザが

・aaa.txt に対して読み込み権限を持っていること
・/home 及び /home/my ディレクトリに実行権限を持っていること

が必要です。


> カンマ区切りデータが入っていると値が入ってくれません

これについては、こんな感じでできます。

IFS=,
read str1 str2 str3 < $FName

bash の man でシェル変数のところに記述がありますので、詳細はそちらを
どうぞ。


> なかなか良いサンプルコードが見つからなくて・・・

一番のお手本は、起動スクリプトですよ。/etc/rc0.d とかの下にあるやつ。
絶対動くって保証もあるし。
    • good
    • 0
この回答へのお礼

a-kumaさんおはようございます。回答ありがとうございます。
今教えていただいた通りやってみたら動きました!
なるほど、ディレクトリに実行権限が無いとだめなんですね~~
難しいです~~。

カンマ区切りのも無事できました。
manは、読んでも難しくてさっぱりわからないんですよね・・・。
でもがんばって読んで勉強します。
今回のスクリプトはとりあえずこれで動きそうです。
本当に助かりました。どうもありがとうございます。

なるほど、起動スクリプトですか・・・
ああいうのをさらっと書けるようになるといいんですけど。。
かんばります!!

お礼日時:2001/08/08 09:34

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