#!/bin/bash
TARGET_ENV="$1"
shift
commandid=$(aws ssm send-command \
--document-name "AWS-RunShellScript" \
--targets Key=tag:Name,Values=$TARGET_ENV \
--parameters '{"commands":["su -c \"./'$@'\" - ec2-user"]}' \
--query 'Command.CommandId' \
--output text)
echo $commandid
(ssm_跑步者. sh)
我的ec2示例有一个名为hello_world. sh的脚本,它打印hello world和echo.sh,后者接受参数并回显它。
以下工程
ssm_runner.sh dev hello_world.sh
但这个没有
ssm_runner.sh dev echo.sh hello
2条答案
按热度按时间dtcbnfnu1#
xxb16uws2#
您可以执行以下操作。
1.在
ssm_runner.sh
脚本中,将位置参数变量$@
的单引号改为双引号,并使其从第二个参数开始,该参数对应于您将通过终端调用传递的脚本。请注意,
${@:2}
代表从第二个参数开始的 * 位置参数变量 *。1.接下来就是这样调用脚本:
基本上,您需要您的echo.sh成为
su -c <...>
发现要执行的第一件事,也就是说,修剪掉dev
并将其余部分作为参数保留,使用位置参数。