shell 脚本如下所示:
#!/bin/bash
while [ true ]; do
clear
date
who
sleep 5
done
如果我运行 int,我会得到以下结果:
yuikus@DESKTOP-VTJ0OG4:~$ cd /mnt/d/lab_oc_1/lab_oc_2/
yuikus@DESKTOP-VTJ0OG4:/mnt/d/lab_oc_1/lab_oc_2/$ sh bag.sh
bag.sh: 7: Syntax error: "done" unexpected (expecting "do")
yuikus@DESKTOP-VTJ0OG4:/mnt/d/lab_oc_1/lab_oc_2/$ bash bag.sh
bag.sh: line 7: syntax error near unexpected token `done'
bag.sh: line 7: `done '
为什么不起作用?我在 Windows 上使用 Ubuntu 运行。
答案1
由于您在 Windows 下操作 Ubuntu,因此您可能会同时使用 Windows 和 Linux 编辑器编辑脚本。但是,Windows 和 Linux 使用不同的行结束符,这可能会使脚本解释器感到困惑。
运行dos2unix
你的脚本文件;这将用 Unix 行结尾替换任何 Windows (CR-LF) 行结尾:
$ dos2unix bag.sh
然后,按照最初的预期运行脚本。请注意,由于您有一个#!
-line 声明/bin/bash
,因此使脚本可执行并将其运行为更有意义
$ ./bag.sh
而不是在 下运行它sh
,这可能会使用不同于您想要的 shell (Bash) 的另一种 shell。