2

在将脚本内容传送到 bash 以执行时,我试图为 bash 脚本提供选项。

#!/bin/bash

SETUP_PACKAGES=""

while getopts ":u:" opt; do
  case $opt in 
    p)
       if [[ "$OPTARG" =~ "mysql" ]] ; then SETUP_PACKAGES="$SETUP_PACKAGES mysql-client libmysqlclient-dev"; fi
       ;;

    # other parts omitted...
  esac
done

在 shell 中执行脚本就像./script.sh -p mysql工作一样。目的是将脚本存储在存储库中,所以我尝试了curl -L example.com/my/script | bash -p mysql. 然而这抛出/usr/bin/mysql: /usr/bin/mysql: cannot execute binary file

我需要做什么来实现我的目标?

4

2 回答 2

2

您需要-sbash 选项才能为交互式 shell 设置位置参数:

curl -L example.com/my/script | bash -s -p mysql
于 2013-01-13T14:33:56.843 回答
1

上面的示例具有误导性,因为您等待“u”选项但仅设置“p”选项。这里的任何方式都是如何用 curl 调用它:

bash <(curl -L example.com/my/script) -p mysql
于 2014-08-04T10:32:10.640 回答