错误fg没有作业控制

时间:2017-08-21 06:42:46

标签: perl batch-file

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文件

请帮我解决此问题

1 个答案:

答案 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报告错误消息“无作业控制”并终止。