скрипт bash / shell не читает второй аргумент - PullRequest
0 голосов
/ 15 октября 2018

это простой скрипт, который я хочу прочитать первым и вторым аргументом, так как он не читает второй аргумент и выдает ошибку, в которой передается значение.

Вот скрипт // Я хочу клонировать git

$cat test.sh

#!/usr/bin/env bash

clone () {
  git clone $2
}

case $1
in
   clone) clone ;;

       *) echo "Invalid Argument passed" ;;
esac

Запуск скрипта

$./test.sh clone https://github.com/sameerxxxxx/test.git/
fatal: You must specify a repository to clone.

usage: git clone [<options>] [--] <repo> [<dir>]

    -v, --verbose         be more verbose
    -q, --quiet           be more quiet
    --progress            force progress reporting

Ответы [ 2 ]

0 голосов
/ 15 октября 2018
#!/usr/bin/env bash

clone () {
  git clone $1
}

case $1
in
   clone) clone $2 ;;

       *) echo "Invalid Argument passed" ;;
esac

https://github.com/sameerxxxxx/test.git/ - это 2-й параметр, передаваемый test.sh, поэтому clone $2 ;; вместо clone ;;.

Для clone $2, $2 - 1-й параметр, передаваемый вфункция clone, поэтому git clone $1 вместо git clone $2.

0 голосов
/ 15 октября 2018

Когда вы вызываете вашу функцию clone, вам необходимо передать ей аргументы.

clone() {
    git clone "$1"
}
...
clone) clone "$2";;

Обратите внимание, что позиционные параметры функции нумеруются отдельно от самого скрипта.

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