有沒有一種簡單的方法可以使用大小引數填充動態字串?
可以說,我們有:
Case N=1:
echo "Benchmark,Time_Run1" > $LOGDIR/$FILENAME
但是,run 變數是引數化的,我們希望所有Time_Runs 從 1 到 n:
Case N=4:
echo "Benchmark,Time_Run1,Time_Run2,Time_Run3,Time_Run4" > $LOGDIR/$FILENAME
通用解決方案應該是這種形式:
Case N=n:
echo "Benchmark,Time_Run1,...,Time_Run${n}" > $LOGDIR/$FILENAME
有沒有辦法在一個回圈中做到這一點,而不是有兩個回圈,一個回圈 n 以生成 Run${n},另一個回圈 n 次以將“Time_Run”附加到串列(類似于 Python)?謝謝!
uj5u.com熱心網友回復:
使用從 1 到 的回圈$n。
{
printf 'Benchmark'
for ((i = 1; i <= $n; i )); do
printf ',Time_Run%d' $i
done
printf '\n'
} > $LOGDIR/$FILENAME
uj5u.com熱心網友回復:
使用單個回圈填充輸出字串的一種方法是:
outstr=Benchmark
for ((i=1; i<=n; i )); do
outstr =",Time_Run$i"
done
它也可以在沒有回圈的情況下完成:
eval "printf -v outstr ',%s' Time_Run{1..$n}"
outstr="Benchmark${outstr}"
但是,eval這是危險的,僅應在沒有合理替代方案的情況下使用。這不是這樣的情況。請參閱為什么在 Bash 中應避免使用 eval,而我應該使用什么?.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/453363.html
