项目涉及到好多关于登录的shell命令,好比登录服务器,连接redis等redis
编写一个shell脚本,不用每次都查询服务器地址了shell
由于咱们使用的是bash, 已 #!/bin/bash 开头声明文件语法是用的是bash语法。 当程序被执行的时候,会加载bash相关环境配置文件bash
若是不写的话,系统可能没法判断程序须要什么shell来执行服务器
除了在 #!/bin/bash 行出现的 # ,其他的在开头的 都表示的此行代码被注释ssh
能够编写命令行直接输入变量值ui
命令与变量的对应是spa
某一条命令 xxx xxx
$0 $1 $2
复制代码
好比 写一个输入变量的shell脚本命令行
echo i am variable '$1', $1
复制代码
执行一下3d
sh variable.sh mxtx
// i am variable $1, mxtx
复制代码
还有一些特殊的变量含义调试
$# 表示后面有几个参数
read 命令能够获取到键盘输入信息
read [-pt] variable
复制代码
其实感受和建立了一个本地变量的概念相似
好比执行
read name // 命令行进入等待状态
i am tom // 回车结束输入
复制代码
而后输出一下这个 name 的变量值
echo $name // i am tom
复制代码
使用 -p 编写一个带有提示的命令
read -p "please enter your name:"
复制代码
if [ 条件 ]; then
条件成立时候要执行的操做
fi
复制代码
这个格式必须这么固定 最后一行就是 fi 表示结束if 语句了
写一个例子,当输入的第一个变量值是 1 就输出 boy 就输出 不然 为 girl
if [ $1 == 1 ]; then
echo boy
else
echo gril
fi
复制代码
若是是多个条件
if [ 条件1 ]; then
条件1成立时候要执行的操做
elif [ 条件2 ]; then
条件2成立时候要执行的操做
fi
复制代码
脚本写完以后不必定保证写的正确,能够先进行一个语法的检查
sh -n youshell.sh
复制代码
有三个参数可使用
参数 | 含义 |
---|---|
n | 不执行脚本 只检查语法 |
v | 执行前将脚本内容输出 |
x | 将使用的内容输出 |
read -p "enter your choice: " choice
# 定义变量
test='work@xxxx'
master='work@xxx'
redis='xxxxxxx'
echo $choice
# 根据输入值 进行条件判断
if [ $choice == test ]; then
ssh $test
elif [ $choice == master ]; then
ssh $master
elif [ $choice == redis ]; then
redis-cli -h $redis
fi
复制代码