Linux ошибка: сценарий оболочки унарного оператора -gt - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь создать собственную командную строку. Так, например, если я ввожу. имя файла 1 привет 2 привет Пользовательское приглашение должно выглядеть так: [] [привет] [привет] [] $. Цифра 1 означает вторую позицию, а цифра 2 - третью позицию. Код не полностью готов, но когда я пытаюсь его запустить, я получаю сообщение об ошибке '-gt unary operator'

#!/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 l oop, чтобы увидеть, есть ли та же проблема произойдет для операторов if, и это произошло. Что я здесь делаю не так?

1 Ответ

0 голосов
/ 18 июня 2020

Вы не присвоили значение '$ first'.

Итак, ваш while l oop, по сути, делает следующее:

[ -ge -1 ]

Это неверный синтаксис и является причиной ошибка вашего унарного оператора.

Вторая строка вашего скрипта не имеет смысла.

$first $1 $second $2

В случае приведенных выше аргументов будет пытаться оценить следующее: «1 привет»

И вы, вероятно, увидите ошибку типа:

1: command not found
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...