教えていただきたいこと
「commandA 2>$1 >/dev/null」と
「commandA >/dev/null」に違いはあるのか
悩んでいる経緯
現在シェルスクリプトを勉強中の初心者です。
コマンドの標準出力とエラー出力両方を表示しないオプションとして
タイトルのオプションがあると思います。
そこで
「>/dev/null 2>&1」と順番を逆にした
「2>&1 >/dev/null」はなぜちゃんと動かないかを調べたところ
2>&1を先に記載してしまうとエラー出力先が変更されないので
実質「意味がない」という記事がたくさんでてきました。
この「意味がない」というのは
「2>&1」を書かなくても同じ処理になるということではないのでしょうか。
今手元の環境で以下コマンドを実行すると(hogeは存在しない)
エラーメッセージが表示されます。
VAR = `ls hoge 2>&1 >/dev/null` echo $VAR ls: hoge: No such file or directory
しかし、以下コマンドを実行するとエラーメッセージは
変数に格納されずその場で出力されてしまします。
VAR = `ls hoge >/dev/null` ls: hoge: No such file or directory
私の理解では「2>&1 >/dev/null」と「>/dev/null」は
同じ処理だと思っていたのですが、違うということだと思います。
この違いをわかりやすく解説していただける方いらっしゃいましたら
是非教えてください!お願いします!

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。