我有一个我正在处理的具有菜单功能的脚本
DO {
$selection = Read-Host ">"
SWITCH ($selection) {
'-h' {GET_HELP}
'refresh' {REFRESH_LIST}
'start' {INSTANCE_START}
'stop' {'STOPPING INTANCE'}
'q' {BREAK}
DEFAULT {'ENTER -h FOR HELP'}
}} until ($selection -eq 'q')
我要对此脚本执行的操作是启动和停止虚拟机。它列出了所有机器,在菜单中我希望用户按如下方式发出命令:
start <hostName>
作为切换菜单中的命令的start
和始终不同的<hostName>
是传递给INSTANCE_START
函数的参数。我的第一个想法是使用split
来分割输入的字符串,并使拆分引用的第一部分切换到要切换的情况,第二部分是传递给函数的变量。这是最好的方法吗?或者是否有更容易的方法和菜单?
答案 0 :(得分:1)
Switch
语句有自己的开关来修改其行为
使用-wildcard
并添加*
代替变量部分:
switch -wildcard ($selection) {
'-h' { GET_HELP; break }
'refresh' { REFRESH_LIST; break }
'start *' { INSTANCE_START; break }
'stop *' { 'STOPPING INTANCE'; break }
'q' { break }
default { 'ENTER -h FOR HELP' }
}
Switch与PS中的所有基本字符串运算符一样不区分大小写(-eq
,-ne
,-like
,-match
),
所以没有必要改变信件的情况。
答案 1 :(得分:0)
您可以在切换案例中使用表达式:
FROM mhart/alpine-node:6.7
MAINTAINER First Lastname <user@example.com>
# Set environment vars
ENV HOME=/root \
APP_DIR=/root/app \
DIST_DIR=/var/www \
AWS_REGION=us-east-1 \
NPM_CONFIG_LOGLEVEL=info \
LANG=en_US.UTF-8 \
LC_ALL=C.UTF-8 \
LANGUAGE=en_US.UTF-8
# Install packages
RUN apk --no-cache add \
--virtual build-dependencies \
ca-certificates \
nginx \
build-base \
bzip2 \
git \
python-dev \
libffi-dev
RUN mkdir -p ${APP_DIR}
WORKDIR ${APP_DIR}
COPY . ${APP_DIR}
# Install node packages
RUN set -uex ;\
npm install -g angular-cli@1.0.0-beta.16 typescript@2.0.3 process-nextick-args ;\
npm install --production --unsafe-perm ;\
npm cache clean
ARG ENV
ENV ENV=${ENV}
# Build project
RUN set -uex ;\
ng build --environment=${ENV} ;\
mv dist ${DIST_DIR} ;\
rm -fr ${APP_DIR}
# nginx config
COPY ./nginx/nginx.conf /etc/nginx/
RUN set -uex ;\
mkdir -p /etc/nginx/sites-available /etc/nginx/sites-enabled/ ;\
chmod -R 755 /etc/nginx/sites-* ;\
ln -sf /dev/stdout /var/log/nginx/access.log ;\
ln -sf /dev/stderr /var/log/nginx/error.log
COPY ./nginx/account-curation.conf /etc/nginx/sites-available/
RUN ln -s /etc/nginx/sites-available/account-curation.conf /etc/nginx/sites-enabled/
# App port
EXPOSE 80 81
# Start nginx
ENTRYPOINT [ "nginx" ]