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

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

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

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

sh

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

Q&A

解決済

2回答

185閲覧

shellスクリプト変数の展開

glp

総合スコア102

Linux

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

sh

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

0グッド

0クリップ

投稿2018/08/22 05:48

実現したいこと

Shellスクリプト超初心者です。スクリプト変数に
"-I/test/hoge -I/test/foo"
と代入したくて、以下のスクリプトを書きました。

====スクリプトの内容= #!/bin/sh ROOTPATH="/test" INC="-I${ROOTPATH}/hoge -I${ROOTPATH}/foo" echo ${ROOTPATH} echo ${INC} ==================== $ ./buildall.sh /test /fooe -I/test

実行すると${INC}の中には、"/fooe -I/test"と入ってます。
マイナーなコンパイラにmakefileを書くまでもない規模のソースを数本
通したくて、簡単なスクリプトを書こうと思ったのですが苦戦しています。

shell変数の展開をgoogleで検索すると
hoge="this is ${ROOTPATH}"
(この出力は"this is /test"になる)のような例題があって、それをまねしたのですがどこかまずいようです。ひとまずmakefileを作成して解決してはいるのですが、後学の為上記スクリプトのINCに希望する値を代入するにはどこが間違っているのか教えていただけませんか ?

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

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

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

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

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

guest

回答2

0

同じスクリプトを実行しても正常に表示できます。

/test -I/test/hoge -I/test/foo

コピペしたときに消えている可能性があるのですが、実際のスクリプトには何か変な文字(非表示文字)が挿入されていませんか?

投稿2018/08/22 05:57

mather

総合スコア6753

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

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

glp

2018/08/22 06:17

エディターの設定がCRLFになっていておかしくなっていました。 無事解決しました。ありがとうございました。
guest

0

ベストアンサー

改行コードがCRLFになっているので、変数の中にCR(行頭に戻る)が入り込んでいます。

./buildall.sh | cat -vで、CRが^Mという記号で表示されます。

改行コードをLFにしましょう。

投稿2018/08/22 05:55

otn

総合スコア84505

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

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

glp

2018/08/22 05:57

おっしゃる通りでした。半日困っていたのですごく助かりました ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問