bash - 将参数的值传递给 shell 函数只打印参数的名称
问题描述
我需要将一个参数传递给我的 shell 函数,如下所示:
function deploy {
docker create \
--name=$1_temp \
-e test_postgres_database=$2 \
-e test_publicAddress="http://${3}:9696"\
# other irrelevant stuff
我正在传递以下参数:
deploy test_container test_name #1 test_database #2 ip_address #3
因此,当我传递这 3 个参数时,会根据它们创建一个新容器。但是,第三个参数有些特殊。所以还有另一个函数,它获取容器的 ip。
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_address=$(get_container_ip_address test_container)
deploy test_container test_database ip_address
假设容器的 IP 地址是 1.1.1.1,那么ip_address=1.1.1.1
. 但是,当我执行脚本并创建容器时,它的 IP 地址是:
"http://ip_address:9696"
而不是"http://1.1.1.1:9696"
.
我还尝试了以下方法:
...
-e test_publicAddress="http://$3:9696"\
...
但我仍然得到相同的结果。有没有办法获得传递参数的值?顺便说一句,我确信它包含所需的 IP 地址,因为我在其他地方(不是在函数中)使用它并且我打印了它以进行测试。先感谢您!
解决方案
所以像这样运行:
ip_address=$(get_container_ip_address test_container)
deploy test_container test_database $ip_address
当你在没有$
脚本的情况下调用它时,让它像字符串一样单独放置ip_address
推荐阅读
- python - 每隔几秒钟从 python 中的 SQL 获取新数据的问题
- android - 在移动应用上存储 SAML 断言并将它们用于用户会话
- javascript - 在 React 中获取在线当前时间
- react-native - 使用 useState 反应原生表单
- r - 如何删除包含超过 2000 个 NA 值的所有列?
- angular - Angular - 迭代来自 Google Books API 的响应对象
- javascript - 使用单个坐标变量在 Google Maps JavaScript API 中选择中心
- r - 如何在R highcharter中反转多个y轴?
- javascript - 如何找到特定的数组属性 ejs
- c# - C#多文本框的一个事件