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

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

ただいまの
回答率

90.76%

  • Linux

    3471questions

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

  • bash

    601questions

    bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

  • コマンドプロンプト

    296questions

    コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

  • コマンド

    215questions

    コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

iniファイルの読み込み時に設定なしか否かを判断する方法

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 559

SmartBuzz

score 73

2つのiniファイルから設定を読み込んで、共通設定ファイルをノーマルとして、個別設定ファイルに設定がもしあればその設定を使うまたは追加で使うというコードを書きたいと思っています。

しかし、現状 -n -z " "などの判断基準では判断してくれず困っています。
方法を教えて頂きたいです。

aaaaA=xxxx
iiiiA=yyyy
uuuuA=pppp
aaaaB=zzzz
iiiiB=tttt
uuuuB=
. Common.ini
. config.ini

CONFIG_AAAA=$aaaaA                 #共通設定から読み込み
if [[ -n "$aaaaB" ]]; then     #個別設定に項目があるか
  if [[ " " != "$aaaaB" ]]; then  #設定値があるか
     CONFIG_AAAA=$aaaaB       #上書き
  fi
fi
#期待値:CONFIG_AAAAにはzzzzが入る

CONFIG_BBBB=$iiiiA                 #共通設定から読み込み
if [[ -n "$iiiiB" ]]; then     #個別設定に項目があるか
  if [[ " " != "$iiiiB" ]]; then  #設定値があるか
     CONFIG_BBBB=CONFIG_BBBB+$iiiiB       #追記
  fi
fi
#期待値:CONFIG_BBBBにはyyyytttttが入る

CONFIG_CCCC=$uuuuA                 #共通設定から読み込み
if [[ -n "$uuuuB" ]]; then     #個別設定に項目があるか
  if [[ " " != "$uuuuB" ]]; then  #設定値があるか
     CONFIG_CCCC=$uuuuB       #上書き
  fi
fi
#期待値:CONFIG_CCCCにはppppが入る

現状、個別設定ファイル値が空白の場合、そこの条件を通り抜けてしまって空文字で上書きされてしまいます。

個別設定ファイルの値が何もない時はどう判断すればよいのでしょうか?

教えてください。
よろしくお願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

for文を使ってみました。

#!/bin/sh

for xx in $aaaaA $aaaaB; do
     CONFIG_AAAA=$xx   #上書き
done

for xx in $iiiiA $iiiiB; do
    CONFIG_BBBB=$CONFIG_BBBB$xx
done

for xx in $uuuuA  $uuuuB; do
     CONFIG_CCCC=$xx   #上書き
done
#!/bin/sh
. ./Common.ini
. ./config.ini

CONFIG_AAAA=$aaaaA     #共通設定から読み込み
for xx in $aaaaB; do
     CONFIG_AAAA=$xx   #上書き
done

CONFIG_BBBB=$iiiiA     #共通設定から読み込み
for xx in $iiiiB; do
    CONFIG_BBBB=CONFIG_BBBB+$xx
done

CONFIG_CCCC=$uuuuA     #共通設定から読み込み
for xx in $uuuuB; do
     CONFIG_CCCC=$xx   #上書き
done

echo $CONFIG_AAAA
echo $CONFIG_BBBB
echo $CONFIG_CCCC

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Linux

    3471questions

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

  • bash

    601questions

    bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

  • コマンドプロンプト

    296questions

    コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

  • コマンド

    215questions

    コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。