我正在尝试在 bash 的一个 while 循环中编写一个 while 循环,第二个 while 的语法没有突出显示。使用 this 有什么特殊语法吗?
while [ "ka" = $name ]
do
while [ "ka" = $name ] //this while is not highlighted
do
done
done
我正在尝试在 bash 的一个 while 循环中编写一个 while 循环,第二个 while 的语法没有突出显示。使用 this 有什么特殊语法吗?
while [ "ka" = $name ]
do
while [ "ka" = $name ] //this while is not highlighted
do
done
done
正如其他答案已经指出的那样,这是语法插件中的一个错误,会影响非 Bash shell 语法。
请向脚本作者 Charles Campbell 提交错误报告(基本上是此页面的链接);他的电子邮件地址在脚本的标题中;该脚本位于syntax/sh.vim
Vim 安装目录中。
如果您没有收到回复,请告知 vim_dev 邮件列表(cp. http://www.vim.org/community.php;您需要先注册);希望,其他人会拿起它。
作为一种解决方法,您可以默认强制使用 Bash 语法(在您的 中~/.vimrc
):
:let g:is_bash = 1
你是对的。出于某种原因,如果shebangwhile
线指向bash
. 例如,以其中任何一个开头的文件都会正确突出显示:
#!/usr/bin/env bash
#!/usr/bin/bash
#!/bin/bash
但并非没有 shebang 行或以下行:
#!/bin/sh
#!/usr/bin/env sh
测试文件:
[shebang line]
while true
do
while true
do
while true
do
:
done
done
done
:set filetype?
在所有情况下都会打印filetype=sh
,所以看起来这是一个错误。
试试下面的脚本。这个对我有用
#!/bin/bash
i="1"
while [ $i -lt 4 ]
do
j="1"
while [ $j -lt 4 ]
do
echo $i
j=$[$j+1]
done
i=$[$i+1]
done
它的输出是
1
1
1
2
2
2
3
3
3
正如预期的那样。
问题可能是您在此处发布的代码之前的代码,因为我在您的代码中找不到语法错误。