Bash在Shell脚本上的无效算术运算符

时间:2018-11-19 20:30:46

标签: bash shell ubuntu

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

<h1>

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

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

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

2 个答案:

答案 0 :(得分:1)

当Bash创建此错误消息时,它会执行与`printf'语法错误非常相似的操作:无效的算术运算符(错误标记为“%s”)\ n'“ $ token”。为此最终成为

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

1行来自您的echo),您的文件必须包含回车符(\ r),因此最终将打印syntax error: invalid arithmetic operator (error token is ",然后移至开头行(这是回车的作用),最后在那里打印")

要执行此操作,您应该从文件中提取当前版本号,printf '%s' "$version" > versioncode.txt来清理文件,然后在脚本中使用该命令(而不是echo)来确保格式为该文件。

答案 1 :(得分: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