我需要将参数传递给我的shell函数,如下所示:
Starting program: /home/ubuntu/mycode/grpc_project/build/myexecutable
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fab553030 (LWP 27568)]
RunServer
DB parsed, loaded 100 features.
Before builder.BuildAndStart()
[New Thread 0x7faad53030 (LWP 27569)]
[New Thread 0x7faa553030 (LWP 27570)]
我要传递以下参数:
grpc::ResourceQuota rq;
rq.SetMaxThreads(n); // n=1 or n=2
builder.SetResourceQuota(rq);
因此,当我传递这三个参数时,将基于它们创建一个新容器。但是,第三个参数有些特殊。因此,还有另一个函数可以获取容器的ip。
function deploy {
docker create \
--name=$1_temp \
-e test_postgres_database=$2 \
-e test_publicAddress="http://${3}:9696"\
# other irrelevant stuff
因此,deploy函数的执行实际上如下所示:
deploy test_container test_name #1 test_database #2 ip_address #3
比方说容器的IP地址是1.1.1.1,所以function get_container_ip_address {
container_id=($(docker ps --format "{{.ID}} {{.Names}}" | grep $1))
echo $(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${container_id[0]})
。
但是,当我执行脚本并创建容器时,其IP地址为:
ip_address=$(get_container_ip_address test_container)
deploy test_container test_database ip_address
而非ip_address=1.1.1.1
。
我还尝试了以下方法:
"http://ip_address:9696"
但是我仍然得到相同的结果。有没有一种方法可以获取所传递参数的值?顺便说一句,我确定它包含所需的ip地址,因为我在其他地方(不在函数中)使用了它,并打印了它进行测试。预先谢谢你!
答案 0 :(得分:1)
这样运行:
ip_address=$(get_container_ip_address test_container)
deploy test_container test_database $ip_address
在不使用$
脚本的情况下调用它时,就像字符串ip_address
一样将其保留下来