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

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

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

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

シェル

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

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Q&A

解決済

3回答

4189閲覧

【shell】外部ファイルを変数で読み込みたい

tarikihongan

総合スコア27

シェルスクリプト

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

シェル

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

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

0グッド

0クリップ

投稿2021/04/22 08:07

シェルについて質問させてください。
外部ファイルに定義した値を、シェル内で変数から呼び出したいです

↓このようなことがやりたいです

txt

1txt1="りんご"

sh

1function msg(){ 2echo "「$1」には、「$1」がはいっています" 3} 4msg txt1

msgファンクションを、「txt1」という引数で呼んでいます

msmファンクションのechoで呼んでいる、一つ目の$1は、そのまま「txt1」と、
二個目の$1はテキストに定義した「りんご」を呼び出したいと考えています

(つまり「「txt1」には、「りんご」がはいっています」)と、出力したいです

いろいろと調べた結果、「eval」を使うとよい、という情報もありましたが、うまくいかず…

どんなことでも構いません。なにかアドバイスをいただけると幸いです

よろしくお願いします

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

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

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

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

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

guest

回答3

0

ベストアンサー

Bash

1source test.txt 2 3function msg(){ 4 eval echo "「$1」には、「$$1」がはいっています" 5} 6 7msg txt1

別解:

Bash

1function msg(){ 2 echo "「$1」には、「$(set | grep -Po "^$1=\K.*")」がはいっています" 3}

投稿2021/04/22 09:50

otn

総合スコア85901

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

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

tarikihongan

2021/04/23 05:40

どちらもできました!! 本当に助かりました、ありがとうございます!!!
guest

0

これで出来ました

bash:test.txt

1txt1="apple"

bash:test.sh

1#!/bin/bash 2 3source test.txt 4 5function msg() { 6 echo ${1} 7} 8 9msg ${txt1}

投稿2021/04/22 08:53

hide5stm

総合スコア426

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

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

tarikihongan

2021/04/22 09:15

ご回答ありがとうございます、できました!! 呼び出し方が違ったのですね。 ちなみに、一つのecho文で、 「txt1」と、「りんご」を同時に表示させることはできますか?
hide5stm

2021/04/22 09:34 編集

a="txt1" echo "${a} -> ${!a}" とやればいけるみたいです。 txt1 -> りんご 外部ファイルにあるtxt1の名称が予測がつかない。ということであればshellより、 awkなどを使って処理したよさそうですね
tarikihongan

2021/04/23 05:41

外部ファイルにあるtxt1の名称が予測がつかない場合でしたので、別の回答を参考にさせて頂きました… 考えて頂き本当に感謝です!
guest

0

shのバージョンによってはうまくいかないかもしれませんが、

test.txt

txt1="りんご"

test.sh

sh

1. test.txt 2echo 「txt1」には、「${txt1}」がはいっています

ubuntuではこれでうまく行きました。

投稿2021/04/22 08:34

KojiDoi

総合スコア13692

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

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

tarikihongan

2021/04/22 09:17

いつもご回答ありがとうございます!助かっています… 【echo 「txt1」には、「${txt1}」がはいっています】 の、「txt1」の部分は直接書き込むのではなく、ファンクション呼び出しの時の引数にしたいです…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問