我在Windows中为这个shell脚本寻找一个等价物:
#!/bin/bash
if [ ! -f D:/Users/u159615/Desktop/fic ];then
echo 1 > fic
fi
read value < fic
#Rscript myRscript.R $value
value=`expr $value + 1`
echo $value > fic
我试过这段代码:
@ECHO OFF
IF NOT EXIST D:\Users\u159615\Desktop\fic (echo 1 >= fic)
set /p cpt =< fic
rem Rscript myRscript.R %cpt%
set /a cpt = %cpt%+1
echo %cpt% > fic
但我有一个Windows脚本的问题,我运行脚本三次,然后我删除文件fic并再次运行它但变量cpt中的值不重置为1。 有没有人有想法?
提前致谢
答案 0 :(得分:1)
小心=
周围的空格。批处理中,空格将成为变量名称的一部分。echo digit>file
将被视为流的重定向,因此在这种情况下,您需要一对额外的括号。
@ECHO OFF
IF NOT EXIST "D:\Users\u159615\Desktop\fic" ((echo 1)>fic)
set /p cpt=<fic
rem Rscript myRscript.R %cpt%
set /a cpt=%cpt%+1
(echo %cpt%)>fic
答案 1 :(得分:0)
我同意npocmaka,但我不喜欢混淆绝对和相对的角色。
@ECHO Off
Set fic="%UserProfile%\Desktop\fic"
IF NOT EXIST %fic% (>%fic% echo 1)
set /p "cpt="<%fic%
rem Rscript myRscript.R %cpt%
set /a "cpt+=1"
Echo new cpt=%cpt%
>%fic% echo %cpt%