抄了一个

本文介绍了一个用于自动化部署过程的shell脚本实现方案,包括版本控制、配置文件更新、打包、文件传输及部署验证等关键步骤。
#!/bin/bash 
2 
 
3 #Date/Time 
4 CTIME=$(date "+%Y-%m-%d-%H-%M") 
5 
 
6 #Shell 
7 CODE_DIR="/deploy/code/deploy" 
8 CONFIG_DIR="/deploy/config" 
9 TMP_DIR="/deploy/tmp" 
10 TAR_DIR="/deploy/tar" 
11 
 
12 
 
13 usage(){ 
14     echo $"Usage: $0 [ deploy | rollback-list | rollback-pro ver]" 
15 } 
16 
 
17 git_pro(){ 
18   echo "begin git pull" 
19   cd "$CODE_DIR" && git pull 
20   API_VERL=$(git show | grep commit | cut -d ' ' -f2) 
21   API_VER=$(echo ${API_VERL:0:6}) 
22   cp -r "$CODE_DIR" "$TMP_DIR" 
23 } 
24 
 
25 config_pro(){ 
26   echo "copy pro config to dir" 
27   /bin/cp "$CONFIG_DIR"/* $TMP_DIR/deploy/ 
28   TAR_VER="$API_VER"-"$CTIME" 
29   cd $TMP_DIR && mv deploy pro_deploy_"$TAR_VER" 
30 } 
31 
 
32 tar_pro(){ 
33   echo "begin tar" 
34   cd $TMP_DIR && tar czf pro_deploy_"$TAR_VER".tar.gz pro_deploy_"$TAR_VER" 
35   echo "tar end pro_deploy_"$TAR_VER".tar.gz" 
36 } 
37 
 
38 scp_pro(){ 
39   echo "begin scp" 
40   /bin/cp $TMP_DIR/pro_deploy_"$TAR_VER".tar.gz /opt 
41   #scp $TMP_DIR/pro_deploy_"$TAR_VER".tar.gz 192.168.1.2:/opt 
42   #scp $TMP_DIR/pro_deploy_"$TAR_VER".tar.gz 192.168.1.3:/opt 
43   #scp $TMP_DIR/pro_deploy_"$TAR_VER".tar.gz 192.168.1.4:/opt 
44 } 
45 #执行部署操作 
46 deploy_pro(){ 
47   #socat haproxy unix nginx  
48   echo "begin deploy" 
49   cd /opt && tar zxf pro_deploy_"$TAR_VER".tar.gz 
50   rm -f /var/www/html && ln -s /opt/pro_deploy_"$TAR_VER" /var/www/html 
51 } 
52 #测试部署 
53 test_pro(){ 
54   echo "begin test" 
55   #curl --head http://192.168.56.31/index.php | grep xxxx 
56   echo "add cluster" # socat haproxy-nginx+php 
57 } 
58 #回滚列表 
59 rollback_list(){ 
60   ls -l /opt/*.tar.gz 
61 } 
62 #制定版本回滚 
63 rollback_pro(){ 
64   #ssh 192.168.56.31  
65   rm -f /var/www/html && ln -s /opt/$1 /var/www/html 
66 } 
67 #主函数,对之前编写的进行组合 
68 main(){ 
69   case $1 in 
70     deploy) 
71         git_pro; 
72         config_pro; 
73         tar_pro; 
74         scp_pro; 
75         deploy_pro; 
76         test_pro; 
77         ;; 
78     rollback-list) 
79         rollback_list; 
80         ;; 
81     rollback-pro) 
82         rollback_pro $2; 
83         ;; 
84     *) 
85         usage; 
86   esac 
87 } 
88 main $1 $2 

 

转载于:https://www.cnblogs.com/gaoyuechen/p/7648466.html

### 回答1: 可以这样写:def 二次方程(a, b, c): d = (b**2) - (4*a*c) if d < 0: print("方程无解!") elif d == 0: x = -b / (2 * a) print("方程有一个实根:", x) else: x1 = (-b + d**0.5) / (2 * a) x2 = (-b - d**0.5) / (2 * a) print("方程有两个实根:", x1, "和", x2) a = float(input("输入a: ")) b = float(input("输入b: ")) c = float(input("输入c: ")) 二次方程(a, b, c) ### 回答2: 下面是一个用Python编写的求解一元二次方程的程序: ```python import math def quadratic_equation(a, b, c): # 首先判断方程是否为一元二次方程 if a == 0: return "这不是一个二次方程!" # 计算判别式 delta = b ** 2 - 4 * a * c # 根据判别式的值进行分类讨论 if delta > 0: # 有两个不相等的实数根 x1 = (-b + math.sqrt(delta)) / (2 * a) x2 = (-b - math.sqrt(delta)) / (2 * a) return "方程的解为 x1 = {:.2f}, x2 = {:.2f}".format(x1, x2) elif delta == 0: # 有两个相等的实数根 x = -b / (2 * a) return "方程的解为 x = {:.2f}".format(x) else: # 没有实数根,存在虚数根 real_part = -b / (2 * a) imaginary_part = math.sqrt(-delta) / (2 * a) return "方程的解为 x1 = {:.2f} + {:.2f}i, x2 = {:.2f} - {:.2f}i".format(real_part, imaginary_part, real_part, imaginary_part) # 测试例子 print(quadratic_equation(1, -3, 2)) # 方程的解为 x1 = 2.00, x2 = 1.00 print(quadratic_equation(2, 2, 1)) # 方程的解为 x = -0.50 print(quadratic_equation(1, 2, 3)) # 方程的解为 x1 = -1.00 + 1.41i, x2 = -1.00 - 1.41i ``` 这个程序首先判断输入的方程是否为一元二次方程,然后根据判别式(b^2 - 4ac)的值分类讨论,从而计算出方程的解。如果判别式大于0,则方程有两个不相等的实数根;如果判别式等于0,则方程有两个相等的实数根;如果判别式小于0,则方程没有实数根,存在虚数根。最后,程序输出方程的解。 ### 回答3: 一元二次方程是形如$ax^2+bx+c = 0$的方程,其中$a\neq 0$。为了求解一元二次方程,我们可以使用求根公式: $$x = \frac{-b\pm\sqrt{b^2-4ac}}{2a}$$ 下面是使用Python编写的求解一元二次方程的程序: ```python import cmath def solve_quadratic_equation(a, b, c): # 计算判别式 discriminant = (b ** 2) - (4 * a * c) # 判断判别式的值,来确定方程的解的类型 if discriminant > 0: # 如果判别式大于零,方程有两个实根 root1 = (-b + cmath.sqrt(discriminant))/(2*a) root2 = (-b - cmath.sqrt(discriminant))/(2*a) return root1, root2 elif discriminant == 0: # 如果判别式等于零,方程有一个实根 root = -b/(2*a) return root else: # 如果判别式小于零,方程有两个复根 complex_root1 = (-b + cmath.sqrt(discriminant))/(2*a) complex_root2 = (-b - cmath.sqrt(discriminant))/(2*a) return complex_root1, complex_root2 def main(): a = float(input("请输入一次项系数a: ")) b = float(input("请输入二次项系数b: ")) c = float(input("请输入常数项系数c: ")) # 调用函数求解一元二次方程 result = solve_quadratic_equation(a, b, c) print("方程的解为:", result) # 调用主函数 main() ``` 在程序中,首先导入cmath库以支持复数的计算。然后定义一个名为 `solve_quadratic_equation` 的函数,该函数接受三个系数 a、b、c作为参数,并根据判别式的值来决定方程的解类型,返回对应的解。在 `main` 函数中,通过用户的输入获取方程的系数,将系数传递给 `solve_quadratic_equation` 函数来求解方程。最后,将求得的解输出到屏幕上。 这个程序可以求解一元二次方程的实根和复根,并根据判别式的值来区分不同的解类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值