Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux错误:-gt一元运算符外壳脚本_Linux_While Loop_Virtual Machine_Command Prompt_Operator Keyword - Fatal编程技术网

Linux错误:-gt一元运算符外壳脚本

Linux错误:-gt一元运算符外壳脚本,linux,while-loop,virtual-machine,command-prompt,operator-keyword,Linux,While Loop,Virtual Machine,Command Prompt,Operator Keyword,我正在尝试生成自定义命令提示符。例如,如果我输入。文件名1你好2你好 自定义提示应如下所示:[[hello][hi][]$。1号代表第二位,2号代表第三位。 代码还没有完全完成,但当我试图运行它时,我得到一个错误“-gt一元运算符” #!/bin/bash $first $1 $second $2 PS1="[][][][]$" while [ $first -gt -1 ] || [ $second -gt -1 ] do if [ $first -eq 0 ] the

我正在尝试生成自定义命令提示符。例如,如果我输入。文件名1你好2你好 自定义提示应如下所示:[[hello][hi][]$。1号代表第二位,2号代表第三位。 代码还没有完全完成,但当我试图运行它时,我得到一个错误“-gt一元运算符”

#!/bin/bash

$first $1 $second $2

PS1="[][][][]$"

while [ $first -gt -1 ] || [ $second -gt -1 ]

do
    if [ $first -eq 0 ]
    then
        PS1="[$1][][][]$"
    elif [ $first -eq 1 ]
    then
        PS1="[][$1][][]$"
    elif [ $first -eq 2 ]
    then
        PS1="[][][$1][]$"
    elif [ $first -eq 3 ]
    then
        PS1="[][][][$1]$"
    fi
done

我尝试删除while循环,以查看if语句是否会出现相同的问题,结果确实如此。我做错了什么?

您没有为“$first”赋值

因此,while循环基本上是这样做的:

[ -ge -1 ]
这是无效语法,是导致一元运算符错误的原因

你剧本的第二行没有意义

$first $1 $second $2
在上述情况下,参数将尝试评估以下内容: “你好”

您可能会看到如下错误:

1: command not found

没关系,它解决了错误!谢谢你的帮助!