простое использование функции в сценарии оболочки - PullRequest
1 голос
/ 15 сентября 2010

Я пытаюсь использовать простую функцию ниже.Но я получаю ошибку, скажем, ожидается унарный оператор, и выход всегда one.Может ли any1 помочь мне исправить это.

#!/bin/bash
checkit ()
{
if [ $1 = "none" ]
then
     echo "none"
else
     echo "one"
fi
}
checkit

Ответы [ 3 ]

2 голосов
/ 15 сентября 2010

$1 - аргумент для всего сценария, а не для функции checkit().Поэтому отправьте этот же аргумент и функции.

#!/bin/bash
checkit ()
{
if [ $1 = "none" ]
then
     echo "none"
else
     echo "one"
fi
}

checkit $1

Это должно сработать.

0 голосов
/ 15 сентября 2010

Используйте ключевое слово [[ вместо встроенного [:

#!/bin/bash
checkit ()
{
if [[ $1 = none ]]
then
     echo none
else
     echo one
fi
}
checkit

Пожалуйста, прочитайте Подводные камни и Bash FAQ .

0 голосов
/ 15 сентября 2010

Surround $1 с такими цитатами:

#!/bin/bash
checkit ()
{
if [ "$1" = "none" ]
then
     echo "none"
else
     echo "one"
fi
}
checkit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...