bash
1prog="supervisor" 2 3echo -n $"Starting $prog: "
この$はどの様な意図を持って付けられているのかを教えて欲しいです。
→ -n $"S の$です。(追記)
bash
1Starting supervisor:
実行結果も記載(追記)
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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
総合スコア6621
0
-n の右隣にある $ なら、$を表示してるんじゃ?
文字にくっつけたら変数と解釈されちゃうからじゃないかなあ。
動かす環境がないんで確証はないけど。
$を表示する意図という話ならちょっと…
文字列を分かりやすくするため?
投稿2016/08/17 13:28
総合スコア7458
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
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
総合スコア2604
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/17 13:14