【发布时间】:2015-11-29 09:28:24
【问题描述】:
我正在尝试在 Ubuntu 操作系统上运行 NS-2 模拟。
说实话,我是 Ubuntu 操作系统和批处理文件的新手。
通过输入:
bash bat.sh
我收到以下错误:
bat.sh: line 1: syntax error near unexpected token `%%a'
'at.sh: line 1: `for /L %%a in (200,380,4000) do (
bat.sh:
for /L %%a in (200,380,4000) do (
ns lab5.tcl %%akb )
第二行正是我想要做的。我正在发送一个 200 kb、580 kb 等的变量。
在 Windows 上运行这个批处理文件可以正常工作。
【问题讨论】:
-
首先,batch 是一个术语,用于在 Windows、MS DOS 或 IBM OS/2 上由命令处理器执行的脚本。 Linux 不支持批处理文件。在 Linux 上,您必须编写 shell 脚本,这需要与 Windows 上的批处理脚本完全不同的语法。 Linux 上有几种 shell 解释器:bash、sh、ksh、……它们的语法也不同。您显然在使用 bash。因此,在搜索 Ubuntu shell 脚本的命令时,请始终包含关键字 bash 或 shell,而不是 batch。
-
这会让事情变得更清楚。虽然我在互联网上找到了一个 bash 语法,但它仍然不起作用..
-
其次,在 Windows 文本文件中,回车符
\r加上换行符\n作为行终止符。在 Linux 文本文件中,只有\n作为行终止符。 Shell 脚本通常不适用于以\r\n结尾的行。使用 Ubuntu 上的文本编辑器创建 shell 脚本,这些脚本默认保存,换行符仅作为行终止符。在 另存为 窗口中,通常可以使用\r\n为已创建的 shell 脚本选择行终止类型,以将文件保存为 UNIX 格式。在使用 Windows 文本编辑器时,请确保以 UNIX 格式保存 shell 脚本。 -
非常感谢!它用下面的代码解决了这个问题(由emi)
-
在 gedit 的 Preferences 中查找 EOL 设置,并确保选择了 Unix(仅换行)。在 Save As 窗口中,您还应该看到一个 EOL(行尾)选项。还有 gedit 插件Newline Madness 可能对你有帮助。