OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

RedHatのシェルスクリプトで・・・・

  • すぐに回答を!
  • 質問No.115344
  • 閲覧数408
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 94% (50/53)

こんにちは。何度もすみません。また質問させて下さい。
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,
なんて書いてみたのですが・・・全然だめのようです。
なかなか良いサンプルコードが見つからなくて・・・。

すみませんが、アドバイスいただけたら、と思います。
宜しくお願いいたします。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

またお会いしましたね。では、早速。

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

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

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

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

が必要です。


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

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

IFS=,
read str1 str2 str3 < $FName

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


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

一番のお手本は、起動スクリプトですよ。/etc/rc0.d とかの下にあるやつ。
絶対動くって保証もあるし。
お礼コメント
bunnyLove

お礼率 94% (50/53)

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

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

なるほど、起動スクリプトですか・・・
ああいうのをさらっと書けるようになるといいんですけど。。
かんばります!!
投稿日時 - 2001-08-08 09:34:18
-PR-
-PR-
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ