ошибка: - тест: ing: ожидается унарный оператор - PullRequest
0 голосов
/ 29 июня 2018

ниже - мой скрипт для запуска некоторых подкоманд. Когда я запускаю скрипт с ./test.sh sub_cmd $APP, он работает нормально. Но когда я запустил его как test sub_cmd $APP, он выдал ошибку.

Я хочу запустить скрипт без использования ./

error :- test: ing: unary operator expected

#!/bin/bash

ProgName=$(basename $0)

APP=${2?Need chart name}

sub_help(){
    echo "Usage: $ProgName <subcommand> [options]\n"

}

sub_dep(){
    echo "Running 'dep' command."
    vi some_path/${APP}/templates/deployment.yaml
}

sub_ing(){
    echo "Running 'ing' command."
    vi some_path/${APP}/templates/ingress.yaml
}

sub_svc(){
    echo "Running 'ing' command."
    vi some_path/${APP}/templates/service.yaml
}
subcommand=$1
case $subcommand in
    "" | "-h" | "--help")
        sub_help
        ;;
    *)
        shift
        sub_${subcommand} $@
        if [ $? = 127 ]; then
            echo "Error: '$subcommand' is not a known subcommand." >&2
            echo "       Run '$ProgName --help' for a list of known subcommands." >&2
            exit 1
        fi
        ;;
esac

1 Ответ

0 голосов
/ 29 июня 2018

Вам нужно запустить «test.sh», а не «test».

test sub_cmd $APP

На самом деле вы запускаете команду test, которая находится в одном из каталогов lib на вашем пути.

Если вы наберете

which test

вы можете увидеть, какая команда / скрипт / программа будет запущена.

Когда вы добавляете в команду префикс относительного пути (например, ./) или абсолютного пути (т. Е. Начинающийся с /), bash будет искать эту папку в этой конкретной папке. Если вы пропустите путь, он будет искать каталоги, перечисленные в переменной окружения $ PATH, и выполнит первый, с которым столкнется. Команда which делает то же самое, но просто перечисляет скрипт / программу вместо того, чтобы выполнить его.

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