传递命令在函数中执行
Pass command to execute in function
在 bash 函数中向 运行 发送命令 return 错误的结果。我相信这是由于 "
但不确定。尝试用 $@
、$()
和 `$1` 替换 $*
。
#!/bin/bash
a(){
status=unknown
while [[ "$status" != "available" ]]; do
aws rds describe-db-clusters --db-cluster-identifier=qa-cls --query "DBClusters[0]|Status"
$* > /tmp/aaa.out
#status=``
#status=$()
#$@ > /tmp/aaa.out
echo ""
echo "$status"
cat /tmp/aaa.out
sleep 10
done
}
aws rds describe-db-clusters --db-cluster-identifier=qa-cls --query "DBClusters[0]|Status"
a "aws rds describe-db-clusters --db-cluster-identifier=qa-cls --query \"DBClusters[0]|Status\""
returns:
available
available
aws rds describe-db-clusters --db-cluster-identifier=qa-cls --query "DBClusters[0]|Status"
unknown
None
在您的函数中使用 "$@"
并删除传递给 a
:
的参数周围的引号
a aws rds describe-db-clusters --db-cluster-identifier=qa-cls --query "DBClusters[0]|Status"
函数的参数是一个数组,正确表示为 "$@"
。没有引号($@
或 $*
)你会得到奇怪的行为(分词)并且 "$*"
将数组转换为单个字符串。
一些建议:
在 bash 函数中向 运行 发送命令 return 错误的结果。我相信这是由于 "
但不确定。尝试用 $@
、$()
和 `$1` 替换 $*
。
#!/bin/bash
a(){
status=unknown
while [[ "$status" != "available" ]]; do
aws rds describe-db-clusters --db-cluster-identifier=qa-cls --query "DBClusters[0]|Status"
$* > /tmp/aaa.out
#status=``
#status=$()
#$@ > /tmp/aaa.out
echo ""
echo "$status"
cat /tmp/aaa.out
sleep 10
done
}
aws rds describe-db-clusters --db-cluster-identifier=qa-cls --query "DBClusters[0]|Status"
a "aws rds describe-db-clusters --db-cluster-identifier=qa-cls --query \"DBClusters[0]|Status\""
returns:
available
available
aws rds describe-db-clusters --db-cluster-identifier=qa-cls --query "DBClusters[0]|Status"
unknown
None
在您的函数中使用 "$@"
并删除传递给 a
:
a aws rds describe-db-clusters --db-cluster-identifier=qa-cls --query "DBClusters[0]|Status"
函数的参数是一个数组,正确表示为 "$@"
。没有引号($@
或 $*
)你会得到奇怪的行为(分词)并且 "$*"
将数组转换为单个字符串。
一些建议: