set /P Input=Options: [r]ead, [w]rite, [m]ixed:
if "%Input%"=="w" then
perl ftl_log_read.pl random_read.txt > random_read.dat
fi
if "%Input%"=="r" then
perl ftl_log_write.pl random_write.txt > random_write.dat
fi
if "%Input%"=="m" then
perl ftl_log_read.pl random_rw.txt > random_read.dat
perl ftl_log_write.pl random_rw.txt > random_write.dat
fi
在Linux机器上进行编译时我得到"第3行:fg:没有工作控制"
这是一个run.bat文件
请帮我解决此问题
答案 0 :(得分:1)
您似乎正在执行Windows批处理文件(.bat)作为Bash shell脚本。这些语法不兼容。 如果要在Linux下运行,则需要将run.bat
脚本重写为shell脚本。
背景:
Bash if
语句需要命令作为条件,而不仅仅是比较表达式。因此"%Input%"=="w"
将进行变量扩展,然后作为命令调用。字符串比较将写为if [[ "$input" = "w" ]]; then ...; fi
。请注意,shell变量看起来像$name
,而批处理变量看起来像%name%
。
Bash功能job control。 shell可以兼顾多个后台进程。如果运行命令%foo
,这将扩展为以foo
开头的后台命令的名称,然后将该命令带到前台。
但是,作业控制仅在交互式会话中可用,即如果您将Bash用作交互式命令行,而不是脚本解释器。因此,Bash报告错误消息“无作业控制”并终止。