Bash変数からローカル値を返しますか?

Bash変数からローカル値を返しますか?

私はこの記事を調べました。Bash 関数の戻り値。データ

Lorem.
\begin{document}
hello
\end{document}

ケース#1は機能しません

パスワード

#!/bin/bash
function getStart {
        local START="$(awk '/begin\{document\}/{ print NR; exit }' data.tex)"
}

START2=$(getStart)
echo $START2

空行を誤って返します。私は予測する1スクリプトが空行を返すのはなぜですか?

ケース#2の操作

パスワード

#!/bin/bash
function getStart {
        local START="$(awk '/begin\{document\}/{ print NR; exit }' data.tex)"
        echo $START
}

getStart

正しく印刷されます1

チョロバ回答出力

#!/bin/bash
function getStart {
        local START="$(awk '/begin\{document\}/{ print NR; exit }' data.tex)"
        echo $START
}

START2=$(getStart)
echo $START2

行番号は一度だけ提供され、これは予想される結果ではありません。二度はやるべきだと思います。

ベストアンサー1

$(...)(別名「コマンドの置き換え」)はコマンドの出力をキャプチャします...。変数に値を割り当てると出力が生成されないため、キャプチャする内容はありません。 #2の場合、echo出力が生成されます。

getStart () {
    local l=Hallo
    echo $l
}

v=$(getStart)
echo $v

更新に応答するには:function outputHalloこの出力はコマンド置換によってキャプチャされます。なぜなら、それはコマンド置換の役割であるからです。したがって、v=$(getStart)スクリプトはそれまで何の出力も生成しません。その後、対応する行がecho $v出力されますHallo

おすすめ記事