我有以下文件,我想在其中增加版本代码:
<h1>
此文件称为“ test.sh”。在命令行上,我运行以下命令:“ bash test.sh”。 输出和错误是这样的:
version=$(<versioncode.txt)
echo "$version"
version=$((version+1))
echo "$version"
echo $version > versioncode.txt
问题是我收到“无效的算术运算符”错误。我正在Windows上运行此项目。安装了bash子系统ubuntu。
答案 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