You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.2 KiB
48 lines
1.2 KiB
#!/bin/bash
|
|
################################################################################
|
|
set -eEuo pipefail
|
|
|
|
badarg() {
|
|
echo -n "$(basename $0): "
|
|
echo "$1"
|
|
echo "Try '$(basename $0) -h' for more information."
|
|
exit 2
|
|
}
|
|
|
|
help="Usage: $(basename $0) [-h] container [command]
|
|
Runs a bash shell on the given container.
|
|
|
|
If the second argument is omitted, an interactive login shell is launched. If the
|
|
second argument is present, the string is interpreted as a command and executed
|
|
directly. To ensure that any shell syntax is evaluated in the container shell
|
|
instead of the host shell, make sure to wrap your string in single quotes.
|
|
|
|
Options:
|
|
-h Display this help and exit"
|
|
|
|
# Handle options
|
|
while getopts ':h' arg; do
|
|
case $arg in
|
|
h) echo "$help"; exit 0;;
|
|
:) badarg "Argument missing for option '-$OPTARG'";;
|
|
?) badarg "Invalid option '-$OPTARG'";;
|
|
esac
|
|
done
|
|
|
|
# Handle non-option arguments
|
|
if [[ $# -lt 1 ]]; then
|
|
badarg "Missing container name"
|
|
else
|
|
container="$1"
|
|
fi
|
|
|
|
if [[ $# -gt 2 ]]; then
|
|
badarg "Too many arguments"
|
|
fi
|
|
|
|
# Main
|
|
if [[ -z $2 ]]; then
|
|
podman exec -it "$container" bash -l
|
|
else
|
|
podman exec -it "$container" bash -c "${@:2}"
|
|
fi
|
|
|