我试图在bash中的一个while循环中编写while循环,而第二个的语法不会突出显示。有没有使用它的特殊语法?
while [ "ka" = $name ]
do
while [ "ka" = $name ] //this while is not highlighted
do
done
done
答案 0 :(得分:3)
正如其他答案已经指出的那样,这是语法插件中的一个错误,它会影响非Bash shell语法。
请向脚本的作者Charles Campbell提交错误报告(基本上是此页面的链接);他的电子邮件地址在脚本的标题中;该脚本位于Vim安装目录中的syntax/sh.vim
。
如果您没有得到回复,请通知vim_dev邮件列表(cp。http://www.vim.org/community.php;您需要先注册)关于此;希望有人会接受它。
作为一种变通方法,您可以默认强制使用Bash语法(在~/.vimrc
中):
:let g:is_bash = 1
答案 1 :(得分:2)
while
,则 VIm 7.3仅突出显示嵌套bash
命令。例如,以任何这些开头的文件都会正确突出显示:< / p>
#!/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
,所以看起来这是一个错误。
答案 2 :(得分:1)
尝试以下脚本。它对我有用
#!/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
正如所料。
问题可能是您在此处发布的代码之前的代码,因为我无法在代码中找到语法错误。