我正在尝试运行一个shell脚本来循环一个图像ID列表来查找元数据
#!/bin/bash
values=$(<$PWD/amis_ID.txt)
for value in $values
do
aws ec2 describe-images --region="us-****-1" --image-ids "$value"
done
示例amis_ID_only.txt
ami-11c3b374
ami-3dd32356
ami-ae3222c6
ami-4cdd9b26
ami-21a7e964
ami-c928e732
ami-15add3ff
ami-2b8e3820
ami-fs0dhswe
...
当我打印$ values时,我觉得很好
然后for循环错误
"n error occurred (InvalidAMIID.Malformed) when calling the DescribeImages operation: Invalid id: "ami-11c3b374
继续循环。
我在for循环中尝试使用和不使用$ for value的引号。还在考虑文件格式是否错误?请告诉我有建议我是否需要清理文件,删除特殊字符,标签,sed,awk等空格或其他任何东西,如果我遗漏了什么。
或者如果这种循环方式甚至可以用于aws ec2 describe
仅供参考:只运行aws ec2 describe-images --image-ids <ami-id>
工作,吐出一个json
答案 0 :(得分:1)
您很少想直接在bash
中循环文件内容。它很慢,很丑......
首选(也是更好)的方式是 - 例如:
<amis_ID.txt xargs -I{} \
aws ec2 describe-images --region="us-****-1" --image-ids "{}"
答案 1 :(得分:0)
这是一个文件格式问题。我的原始解决方案有效或任何其他解决方案都可行该文件采用dos格式。
这就是我所做的:在procedure TReceiverMainForm.OnAppMessageReceived(const ASender
: TPair<HWND, string>; const AReceivedData: TCopyDataStruct;
var AResult: integer);
var
Info: PTypeInfo;
Data: PTypeData;
KindName: String;
SubName: String;
_TypeInfo: TTypeInfo;
_MyRec: TMyRec;
begin
....
else
begin
memLog.Lines.Add('Unknown data received.');
if (AReceivedData.dwData) = integer(TCopyDataType.cdtRecord) then
begin
memLog.Lines.Add('Record received.');
// This one works fine if "_Stream.Write(NativeInt(ARecordType), SizeOf(TTypeInfo));"
// is commented out
//_MyRec := GetProcessMyRec(ASender.Key, pointer(NativeUint(AReceivedData.lpData^)), SizeOf(TMyRec));
_TypeInfo := GetProcessTypeInfo(ASender.Key,
Pointer(AReceivedData.lpData^), SizeOf(TTypeInfo));
Info := System.TypeInfo(TMyRec);
if (_TypeInfo.Name = Info^.Name) and (_TypeInfo.Kind = Info^.Kind) then
begin
// _MyRec := GetProcessMyRec(ASender.Key, Pointer(AReceivedData.lpData^), SizeOf(TMyRec)); works
_MyRec := GetProcessMyRec(ASender.Key, pointer(NativeInt(AReceivedData.lpData^) +
SizeOf(TTypeInfo)), SizeOf(TMyRec));
ShowMessage(_MyRec.Name + ', Age: ' + IntToStr(_MyRec.Age) + ', birthday: ' +
DateToStr(_MyRec.Birthday));
end;
end;
AResult := -1;
end;
end;
编辑器中打开文件并用
vi
感谢所有解决方案