Передача аргументов BASH - PullRequest
       8

Передача аргументов BASH

1 голос
/ 31 августа 2009

[Редактировать] Я суммировал ответ на следующее ниже, ошибка лежит в строке:

[Редактировать] if [$ 1 ne $ value]; то


Я пытаюсь передать значение команде:

#!/bin/bash
for value in $(mycommand $1)
do
    echo Found $value
    if [$1 ne $value]; then
        echo No match!
    if
done

Но если я наберу следующее, чтобы выполнить скрипт:

#./myscript 25

Я получаю ошибку:

Found somestuff
./myscript: 25: command not found

Что я хотел бы сделать, это передать первый аргумент скрипта («25» в приведенном выше примере) и отправить его команде «mycommand».

Как я могу это сделать?

Ответы [ 3 ]

1 голос
/ 31 августа 2009

Это полная myscript? Я попробовал ваш скрипт как написано и не получил такой ошибки:

$ ./myscript.sh 25
Found somestuff
$

Если я добавлю $1 в конец скрипта:

$ ./myscript.sh 25
Found somestuff
./myscript.sh: line 6: 25: command not found
$

Обновление до вашей правки: при использовании команды [ вам необходимо добавить дополнительное пространство, а также использовать -ne:

if [ $1 -ne $value ]; then

Команда [ часто реализуется как мягкая или жесткая ссылка на команду test, например:

$ ls -l `which [`
lrwxr-xr-x    1 root     root            4 May 16  2006 /usr/bin/[ -> test

Страница справочника для test даст больше информации о допустимых выражениях.

0 голосов
/ 31 августа 2009

Грег указал мне в правильном направлении, а именно:

  • добавить пробел вокруг [] в операторе if, я не знал, что это команды
  • тест программы не принимает 'ne' в качестве аргумента.

Мой исправленный скрипт:

!/bin/bash
for value in $(mycommand $1)
do
    echo Found $value
    if [ $1 != $value ]; then
        echo No match!
    if
done

Большое спасибо.

0 голосов
/ 31 августа 2009

Я не вижу проблем с этим скриптом.

$ more x
#!/bin/bash
for value in $(echo $1)
do
    echo Found $value
done
$ sh x 28
Found 28
$

Что именно делает моя команда?

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