我正在尝试使用docker在我的本地设置dynamodb。我希望通过使用makefile来控制初始化。这是我正在使用的makefile文件
TABLE_NAME="users"
create_db:
@aws dynamodb --endpoint-url http://localhost:8042 create-table \
--table-name $(TABLE_NAME) \
--attribute-definitions \
AttributeName=userID,AttributeType=N \
--key-schema \
AttributeName=userID,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 >> /dev/null;
drop_db: check_db
check_db; if [test $$? -eq 1] then \
@aws dynamodb --endpoint-url http://localhost:8042 delete-table --table-name $(TABLE_NAME); \
fi
check_db:
-@aws dynamodb --endpoint-url http://localhost:8042 describe-table --table-name $(TABLE_NAME);
AWS没有提供像MYSQL这样的DROP IF EXISTS功能,因此我试图使用describe table的输出来检查表的存在。但是出现以下错误
check_db; if [test $? -eq 1] then \
@aws dynamodb --endpoint-url http://localhost:8042 delete-table --table-name "requests"; \
fi
/bin/sh: -c: line 0: syntax error near unexpected token `fi'
/bin/sh: -c: line 0: `check_db; if [test $? -eq 1] then @aws dynamodb --endpoint-url http://localhost:8042 delete-table --table-name "requests"; fi'
make: *** [drop_db] Error 2
我是makefile的新手,无法弄清楚如何解决该错误。上面的makefile有什么问题?还有没有更好的方法来检查发电机表的存在
这不是Makefile
问题,这是您的Shell脚本中的语法错误。基本上,您需要在then
之前输入分号。
$ false; if [test $? -eq 1] then echo foo; fi
bash: syntax error near unexpected token `fi'
您还需要决定使用[
还是test
,因为当前语法也不正确。
$ false; if [test $? -eq 1]; then echo foo; fi
Command '[test' not found, did you mean:
...
工作版本:
$ false; if [ $? -eq 1 ]; then echo foo; fi
foo