微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试使用用户输入、环境变量、文件系统操作、条件、下载、取消归档编写脚本

如何解决尝试使用用户输入、环境变量、文件系统操作、条件、下载、取消归档编写脚本

我正在尝试根据以下场景编写脚本:

  1. 文件 Advanced - Linux Shell Scripting – Env.tgz 放入任何网络资源

  2. 编写执行以下操作的脚本:

    1. 下载文件

    2. 解压到临时目录

    3. 要求用户选择一个环境名称。如果用户不选择,请选择FeatureBranch env。

    4. 在未归档的目录结构中的所选环境目录中查找具有所选环境名称的目录。

    5. 检查该目录是否存在,如果不存在,则以错误消息和状态结束。

    6. 从对应的主机名目录中复制文件/etc/Nginx如下:

      1. 始终从 unified 文件夹中复制文件(如果存在)

      2. 如果环境目录中存在名称与当前主机名相同的文件夹,则将其中的文件复制到 /etc/Nginx。例如,web3-us-east1.local 目录中有一个文件Prod。仅当当前主机名是 web3-us-east1.local

        时才应复制其中的文件
    7. 重启Nginx

  3. 如果存在任何严重错误(例如,没有环境目录或存档文件已损坏等),请使用非零退出代码退出脚本。

但我被困在“让用户选择环境名称。如果用户不选择,请选择认的“FeatureBranch”环境。”

这是我现在的代码

#!/bin/bash

curl -O ftp://ftp/AdvancedLinuxShellScriptingEnv.tar.gz --user vsftp:aq12w34e

tar -xzvf AdvancedLinuxShellScriptingEnv.tar.gz -C /tmp/
tar -xvf /tmp/*.tar -C /tmp/
rm -rf /tmp/*.tar | rm -rf ~/*.gz

#Asking user to choose an environment name
echo "Enter Environment Name:"
envname=${FeatureBranch:-DEFAULTVALUE}
read envname
valid='0-9a-zA-Z $%&#'
if [[ ( $envname =~ [^$valid] ) ]];
then
    export $envname=/tmp/AdvancedLinuxShellScriptingEnv/
fi

解决方法

我已经用这段代码解决了我的问题:

echo "Enter Environment Name (FeatureBranch is default): "
                read -rp"[FeatureBranch/Other]: " -e -i FeatureBranch USER_INPUT
        if [[ $USER_INPUT == "FeatureBranch" ]]; then
                export FeatureBranch='/tmp/AdvancedLinuxShellScriptingEnv/'
        else
                export $USER_INPUT='/tmp/AdvancedLinuxShellScriptingEnv/'
        fi

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?