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

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

新規登録して質問してみよう
ただいま回答率
85.48%
bash

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

Q&A

解決済

1回答

6128閲覧

変数の中で変数を扱って呼び出したい

inu_inu

総合スコア19

bash

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

0グッド

0クリップ

投稿2019/01/24 00:55

お世話になっております。
質問に不備等ございましたら、ご指摘ください。

実現したいこと

変数の中で変数を呼び出して、その結果を呼び出したいです。

ファイルの存在を判定して、すべてのファイルが存在した場合に処理を行うプログラムを書いています。
例えば、下記のようなファイルを判定に用いようとしたとき、変数名についている数字部分をループで変数として取得することで、ファイル名を取得したいです。

example

1file1 = aaa.txt 2file2 = bbb.txt

試したこと

下記がファイル名を取得する部分です。
(確認のためにechoを行っています)

bash

1#!/bin/bash 2 3############################################### 4# 判定するファイル 5file1=aaa.txt 6file2=bbb.txt 7############################################### 8 9for i in 1 2 10do 11 12 # テスト 13 echo $file$i 14 # テスト2 15 eval echo $file$i 16 17done 18 19exit 0 20

テスト1,2ともに**$file部分が効かず、結果としては1,2が表示されます。
呼び出した変数を
eval**で連結して、その結果を用いて呼び出すのだとは思いますが、うまく書き方がわかりませんでした。
拙い日本語で申し訳ありませんが、ご教授いただけると幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

この目的なら配列にするのが良いです。

Bash

1#!/bin/bash 2 3############################################### 4# 判定するファイル 5file[1]=aaa.txt 6file[2]=bbb.txt 7############################################### 8 9for i in 1 2 10do 11 12 echo ${file[i]} 13 14done 15 16exit 0

元のコードで、evalを使うなら、eval echo $file$iです。

投稿2019/01/24 01:15

otn

総合スコア84557

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

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

inu_inu

2019/01/24 01:25

あ...たしかに、配列を使うということが頭から消えていました...。 元コードを使うときはバックスラッシュを使用すると問題ないのですね、確認したところ想定通り動きました。 配列を使用する前提で、evalに関してもう少し調べてみようと思います。 (バックスラッシュに関して、見落としていた・読み違えていた可能性があるため) ありがとうございました!
otn

2019/01/24 01:29

eval echo '$'file$i とか eval echo '$file'$i とかでもいいです。一度評価して $ になるように書けばいい。
inu_inu

2019/01/24 01:42

シングルクォートは試してみた(質問後のため記載なし)ですがうまくいってませんでした。 ご提示いただいた内容だと動かすことができました。どこか間違えていたようです…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問