如何在Bash中增加局部变量?


13

数据

1
\begin{document}
3

#!/bin/bash

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

START2=$(getStart)
echo $START2

返回,2但我想要3。我通过关于如何在bash脚本中添加数字的答案未成功更改结尾:

START2=$((getStart+1))

如何在Bash脚本中增加局部变量?


我从代码中得到2,而不是1。
choroba


1
OFF:为什么awksed -n '/begin{document}/{=;q}' data.text短得多……
Costas

@Costas是的,您是对的!今天我经历了糟糕的一天,认为事情太复杂了。现在在这里考虑开放时间的问题:unix.stackexchange.com/q/229060/16920您能}/{=;q}在答案/评论中解释一下吗?
莱奥波德·赫兹(LéoLéopoldHertz)2015年

Answers:


36

2从您的代码中获取。不过,您可以对任何变量或数字使用相同的技术:

local start=1
(( start++ ))

要么

(( ++start ))

要么

(( start += 1 ))

要么

(( start = start + 1 ))

要不就

local start=1
echo $(( start + 1 ))

等等



3

尝试:

START2=$(( `getStart` + 1 ));

$(( ))是告诉bash,它是执行算术运算,而反引号是告诉bash来评价含有表达,无论是一个用户定义的函数或外部程序的调用,并返回标准输出的内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.