0

我有以下文件,我想在其中增加版本代码:

version=$(<versioncode.txt)
echo "$version"
version=$((version+1))
echo "$version"
echo $version >  versioncode.txt

该文件称为“test.sh”。在命令行上,我运行了以下命令:“bash test.sh”。输出和错误是这样的:

niklasraab@DESKTOP-BLJGB4D:/mnt/c/Flutter/src/hapii$ bash test.sh
1
")syntax error: invalid arithmetic operator (error token is "
1
niklasraab@DESKTOP-BLJGB4D:/mnt/c/Flutter/src/hapii$

问题是我收到“无效算术运算符”错误。我在 Windows 上运行这个项目。安装了 bash 子系统 ubuntu。

4

2 回答 2

1

当 Bash 创建此错误消息时,它会执行非常类似于 `printf 'syntax error: invalid algorithm operator (error token is "%s")\n' "$token" 的事情。最终成为

")syntax error: invalid arithmetic operator (error token is "

(这些1行来自您echo的 s)您的文件必须包含一个回车符 (\r) 字符,因此它以 print 结束syntax error: invalid arithmetic operator (error token is ",然后移动到行首(这是回车符所做的),最后")在那里打印。

要完成这项工作,您应该从文件中提取当前版本号, printf '%s' "$version" > versioncode.txt清理文件,并在脚本中使用该命令(而不是echo)以确保该文件的格式。

于 2018-11-19T20:45:24.807 回答
1

我只是在我自己的 windows linux 子系统中做到了这一点,它似乎工作:

nellis@L-X-NELLIS:~$ echo 1 >> versioncode.txt
nellis@L-X-NELLIS:~$ cat versioncode.txt
1
nellis@L-X-NELLIS:~$ version=$(($(cat versioncode.txt)))
nellis@L-X-NELLIS:~$ echo "$version"
1
nellis@L-X-NELLIS:~$ version=$((version+1))
nellis@L-X-NELLIS:~$ echo "$version"
2
nellis@L-X-NELLIS:~$ echo $version >  versioncode.txt
nellis@L-X-NELLIS:~$ cat versioncode.txt
2
于 2018-11-19T20:46:29.540 回答