bash - 传递命令以在函数中执行
问题描述
发送命令以在 bash 函数中运行返回错误的结果。我相信这是由于"
但不确定。尝试用$*
和$@
` $($1)
$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=`$1`
#status=$($1)
#$@ > /tmp/aaa.out
echo "$1"
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\""
返回:
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"
函数的参数是一个数组,它被正确地表示为"$@"
. 如果没有引号 ( $@
or $*
),您将得到奇怪的行为(分词)"$*"
并将数组转换为单个字符串。
一些指示:
推荐阅读
- arrays - 在swift中用2个不同的字符动态分隔一个字符串
- android - 在 PWA 中提示打开设备 GPS
- ios - ionic:缺少 iOS 项目的权利
- amazon-web-services - CloudFormation AWS::Events::Rule:遇到不受支持的属性 ID
- python - 模块“x”没有属性“y”,创建我自己的模块 .py
- c++ - 编译fortran文件时如何修复“在制作共享对象时无法使用重定位R_X86_64_32s对'.rodata'”链接错误
- java - 如何在我的 JavaFX 应用程序中写入 FXML 文件的路径?
- c# - 使用 C# 以编程方式清除 kafka 主题
- android - 如何将两个 JSON 数组合并为一个 JSON 数组?
- reactjs - 用jest和酵素怎么做成分测试?