Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash脚本/AWS集成_Bash_Amazon Web Services_Command Line Interface - Fatal编程技术网

Bash脚本/AWS集成

Bash脚本/AWS集成,bash,amazon-web-services,command-line-interface,Bash,Amazon Web Services,Command Line Interface,我正在尝试创建一个Bash脚本,它可以从一个命令中删除我的所有Amazon转录作业。 我创建了以下脚本: #!/bin/bash aws transcribe list-transcription-jobs --max-results 100 --query '[TranscriptionJobSummaries[*].TranscriptionJobName]' --output text while read jobName; do aws delete-transcription

我正在尝试创建一个Bash脚本,它可以从一个命令中删除我的所有Amazon转录作业。 我创建了以下脚本:

#!/bin/bash

aws transcribe list-transcription-jobs --max-results 100 --query '[TranscriptionJobSummaries[*].TranscriptionJobName]' --output text
while read jobName; do
    aws delete-transcription-job --transcription-job-name "$jobName"
done
但是,在运行时,它会列出转录作业,但不会删除它们。事实上,删除作业后,它什么也不做!尽管如此,即使它什么也不做,它仍在继续处理作业


关于如何解决这个问题或我哪里出了问题,您有什么想法吗?

您需要在读取
循环的标准输入时,将
aws
命令的标准输出导入
。您还需要切换到
read-r
来禁用
read
命令的一些遗留行为,尽管这在这里可能并不重要

aws转录列表转录作业--最大结果100--查询“[TranscriptionJobSummaries[*].TranscriptionJobName]”--输出文本|
而read-r作业名;做
aws删除转录作业--转录作业名称“$jobName”
完成
关键的修复是第一行末尾的
|
。也许还可以阅读基本的壳牌管道

您最初的命令只是将Resultl列为标准输出,然后坐在那里等待
read
命令从其他地方接收输入(实际上是从您的键盘)

如果
aws delete transcription job
能够以某种方式接受一个作业列表,那么您可以完全取消
while
循环。很遗憾,我不熟悉这个特定的命令。

很简单

IFS="
"
for jobName in `aws transcribe list-transcription-jobs --max-results 100 --query '[TranscriptionJobSummaries[*].TranscriptionJobName]' --output text`; do
    aws delete-transcription-job --transcription-job-name "$jobName"
done

我尝试了以下代码,但出现了一个错误,这是我从以前尝试的版本中收到的。错误消息如下:
aws:error:argument命令:无效选择,
在顶部使用
set-x
,看看哪里出了问题。我一直试图将作业名称还原为一个变量,以便运行delete,但它似乎不起作用。即使使用新代码,问题仍然存在,即使我将“|”替换为“;”“为什么要将
替换为
?回到原点;分号在语法上等同于换行符。如果我使用
|
它不会将其识别为代码,并给我一个错误什么错误?为什么您认为它不能被识别为代码?它说的是
aws:error:argument command:Invalid choice,有效的选项是:
,后面是大量可能使用的命令