我试图在将脚本内容传递给bash执行时为opash脚本提供opts。
#!/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
在像./script.sh -p mysql
这样的shell中执行脚本有效。目的是将脚本存储在存储库中,因此我尝试了curl -L example.com/my/script | bash -p mysql
。但是这会引发/usr/bin/mysql: /usr/bin/mysql: cannot execute binary file
。
我需要做些什么来实现我的目标?
答案 0 :(得分:2)
bash需要-s
选项才能设置交互式shell的位置参数:
curl -L example.com/my/script | bash -s -p mysql
答案 1 :(得分:1)
以上示例具有误导性,因为您等待" u"选项,但仅设置" p"选项。 这里的任何方式是如何用curl调用它:
bash <(curl -L example.com/my/script) -p mysql