2017-09-02 12 views
1

これはうまくいかないでしょうか?それはinfoページからそうであるように見えます。

echo ${[email protected]} 
bash: ${[email protected]}: bad substitution 

私は何か間違っていますか?おかげさまで

EDIT:私はコマンドプロンプトを取り出しました...これは古いBSDのもので、stderrリダイレクトのようでした。私の悪い。

+0

のbash-4.4の下で出力されていますか? – z3nth10n

+0

bash-4.4 '$ {PARAMETER @ OPERATOR}' 拡張は、 オペレーターの値に応じて、PARAMETER の値の変換またはPARAMETER自体に関する情報のいずれかです。各演算子は1文字です。 'Q' 展開は、入力として再利用できる形式で引用されたPARAMETER の値である文字列です。 –

+0

期待される出力/結果は何ですか?最初に、stderrを別のプロセスにリダイレクトすることはできませんが、stderrを別のプロセスにパイプする方法があります。しかし、 "echo $ {IFS @ Q}"がパイプで何を達成するのか分かりません。最後に、$ {IFS @ Q}が何をすべきか分かりません。あなたは何をしたいのか説明していただけますか? –

答えて

3

私はばかです。私は別のマシン(バージョン4.2.46(1)-release(i386-redhat-linux))でバッシングしながら、あるマシン(バージョン4.4.0(2)-release(sparc-sun-solaris2.7))からinfoページを読み込んでいました-gnu))。

${@Q}の表記が新しいと思われます。あなたは正確にやろうとしている何

echo ${[email protected]} 
$' \t\n' 
+2

古いシェルとの互換性のため、 'printf '%q \ n" "$ IFS" 'を使用してください。 –

+0

ああ、私は 'printf%q'が好きです。どんな打撃を受けようとしているのか誰が知っていますか?私はすでに連想配列のないマシン(bash-3?)を見つけ、たくさんのコードを書き直さなければならなかった。 –

関連する問題