&2" を保存する方法">

変数に ">&2" を保存する方法

変数に &2" を保存する方法">

同様の質問ですが、答えはありません。変数に保存されたコマンドをどのように実行できますか?

Bashスクリプトで次のことをどのように実行できますか?

error=">&2"
echo 'something went wrong' $error

変える

echo 'something went wrong' >&2

なぜ?
タイプミスはうまく>2&いきますが、というエラーメッセージが書かれているからです2

ベストアンサー1

コメントで述べたように、あなたは本当に知りません。

evalまあ、あなたはそれを行うことができますその他コマンドラインから。

ただし、関数を使用していくつかの操作を実行できます。リダイレクトで指定された単純なコマンドを実行するか、stderrにメッセージを作成します。

#!/bin/bash
tostderr() {
        "$@" >&2
}

warn() {
        local IFS=" "
        printf "%s\n" "$*" >&2
}

tostderr printf "warning: %s\n" "something happened"

warn another thing to warn about

強調するシンプルコマンドは最初のコマンドにありますが、コマンドevalではシェル構文を使用できません。たとえば、出力をパイプを介してstderrにtostderr foo | barリダイレクトするだけで効果はありません。footostderr (foo | bar)


zshを使用していて本当にこれを実行したい場合は、グローバルエイリアスを使用してリダイレクトを追加できます(しかし、一部はこれがエンコードを難読化するのに近いと思うかもしれません)。

#/usr/bin/zsh

alias -g TOSTDERR='>&2'
echo something bad happened TOSTDERR

おすすめ記事