私はこの記事を調べました。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
。