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

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

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

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

Linux

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

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

Q&A

解決済

3回答

2375閲覧

echoコマンドにある$の意味

hoge_yama

総合スコア20

bash

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

Linux

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

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

1グッド

3クリップ

投稿2016/08/17 12:37

編集2016/08/17 13:32

bash

1prog="supervisor" 2 3echo -n $"Starting $prog: "

この$はどの様な意図を持って付けられているのかを教えて欲しいです。

→ -n $"S の$です。(追記)

bash

1Starting supervisor:

実行結果も記載(追記)

take88👍を押しています

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

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

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

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

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

guest

回答3

0

ベストアンサー

多言語対応フレームワークの為です。

以下のシェルをcmdとして保存します。

prog="supervisor" echo -n $"Starting $prog: "
$ chmod +x cmd $ bash --dump-po-strings cmd > cmd.pot $ mkdir ja $ cp cmd.pot ja/ $ vi ja/cmd.pot

ja/cmd.potを以下のように編集

#: cmd:3 msgid "Starting $prog: " msgstr "$prog を開始: "
$ sudo msgfmt -o /usr/share/locale/ja/LC_MESSAGES/cmd.mo ja/cmd.pot $ TEXTDOMAINDIR=/usr/local/share/locale $ TEXTDOMAIN=cmd $ LANGUAGE=ja ./cmd supervisor を開始: $ LANGUAGE=C ./cmd Starting supervisor:

投稿2016/08/17 13:12

moonphase

総合スコア6621

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

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

hoge_yama

2016/08/17 13:14

丁寧な具体例まで添えてくださり、ありがとうございます!
guest

0

-n の右隣にある $ なら、$を表示してるんじゃ?
文字にくっつけたら変数と解釈されちゃうからじゃないかなあ。
動かす環境がないんで確証はないけど。

$を表示する意図という話ならちょっと…
文字列を分かりやすくするため?

投稿2016/08/17 13:28

takasima20

総合スコア7458

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

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

hoge_yama

2016/08/17 13:34

実行結果も記載すべきでした! 出力には$は含まれていなかったので疑問に思い質問させていただきました!
takasima20

2016/08/18 09:06

いや、見当違いの回答で面目ないです。(^_^;
guest

0

どちらの $なのかわからないですが、前者のことでしょうか。後者は変数展開です、結果を見ればわかるでしょう。

前者の $"はbash(4.0から?)において、localeに応じた文字への置き換えが行われます。
詳しくは覚えてない(そこまで調べてないといった方が正しい)ですが、TEXTDOMAINとかLC_MESSAGESあたりが適切に設定されていて、*.moファイル内にその変換規則がある場合に表示が変わったと思います。

例えば、ロケールに応じて

$ echo $"Hello" こんにちは

とか、別のロケール設定にすると

$ echo $"Hello" Hi!

とか出せたりするためのものです。

http://www.gnu.org/software/bash/manual/html_node/Locale-Translation.html

投稿2016/08/17 13:12

flied_onion

総合スコア2604

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

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

hoge_yama

2016/08/17 13:16

ご指摘の通り曖昧な質問でした! ご回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問