Fork me on GitHub

Linux 基础Shell脚本

#!/bin/bash

Bash变量

用户自定义变量

变量名=变量值 默认变量值为字符串

echo $变量名

变量叠加 x=”$x”other | x=${x}other

set:查询所有变量

set -u 然后调用未声明的变量会报错

unset 变量名:删除变量

exoprt 变成系统变量(实质上是declare)

env:只能看到环境变量

常见系统变量

HOSTNAME SHELL SSH USER HOME MAIL TERM

PATH

locale 支持的语系 LANG系统主语系 LC_ALL

下次开机的默认语系:/etc/sysconfig/i18n

PS1 命令提示符变量

位置参数变量

$n

$0 命令本身

$1-9 ${10} 参数

$* 所有传入的参数是一个整体

$@ 所有传入的参数是独立的,有几个参数,循环几次

$# 返回传入参数的个数


read 接受键盘输入(交互)

-p 输入
-t 等待时间
-s 隐藏
-n 指定输入的字节数

预定义变量

$? 返回上一条命令的执行状态

正确执行 返回0 | 执行错误 返回2 | 命令找不到 返回127

$$ 返回当前进程的PID号

$! 返回后台运行的最后一个进程的PID号

Shell运算符

弱类型,类似javascript

declare [+/-] [i/a/]

变量参数

expr let

$((运算式)) $[运算式]

变量参数

变量测试

变量参数

环境变量配置文件

重新加载配置文件: source 配置文件 . 配置文件

正常登陆过程,主要的文件:

/etc/profile

/etc/profile.d/*.sh

~/.bash_profile

~/.bashrc

/etc/bashrc

加载文件顺序>>[login而不是开机]

变量参数

注销

~/.bash_logout

历史命令

~/.bash_history

正则表达式

流程控制语句

常用的shell

判断文件存在
1
2
3
if [ -e file ] then

fi
判断容器是否启动成功
1
2
3
4
5
6
if docker ps  | grep ${PROJECT_NAME}; then
echo "Start Docker Container: ${PROJECT_NAME}-${PROJECT_VERSION} Success"
else
echo "Start Docker Container: ${PROJECT_NAME}-${PROJECT_VERSION} Error"
return 1
fi

判断8080端口是否正常监听中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
started=0
n=1
echo "try $n times service starting"
while true
do
if test $n -gt 20
then
echo " service failed"
started=1
break
fi
sleep 10
n=$(($n+1))
echo "try $n times service starting "
port=`netstat -lntp | egrep "8080" | wc -l`
if [ ${port} -gt 0 ]; then
echo " service is started"
break;
fi
done

ssh免登陆

1.客户端生成公私钥
本地客户端生成公私钥:(一路回车默认即可)

ssh-keygen

上面这个命令会在用户目录.ssh文件夹下创建公私钥

cd ~/.ssh

ls
下创建两个密钥:

id_rsa (私钥)
id_rsa.pub (公钥)

2.上传公钥到服务器
这里测试用的服务器地址为:192.168.235.22
用户为:root

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.235.22

上面这条命令是写到服务器上的ssh目录下去了
cd ~/.ssh
vim authorized_keys
可以看到客户端写入到服务器的 id_rsa.pub (公钥)内容。

3.测试免密登录
客户端通过ssh连接远程服务器,就可以免密登录了。
ssh root@192.168.235.22
exit
同时也可sftp

导入导出pg数据库,修改jar包内的某一个文件

文章目录
  1. 1. #!/bin/bash
    1. 1.1. Bash变量
      1. 1.1.0.1. 用户自定义变量
      2. 1.1.0.2. 常见系统变量
      3. 1.1.0.3. 位置参数变量
        1. 1.1.0.3.1. -p 输入
        2. 1.1.0.3.2. -t 等待时间
        3. 1.1.0.3.3. -s 隐藏
        4. 1.1.0.3.4. -n 指定输入的字节数
      4. 1.1.0.4. 预定义变量
  2. 1.2. Shell运算符
    1. 1.2.0.0.1. $((运算式)) $[运算式]
    2. 1.2.0.0.2. 变量测试
  • 1.3. 环境变量配置文件
  • 1.4. 正则表达式
  • 1.5. 流程控制语句
    1. 1.5.0.0.1. 判断文件存在
    2. 1.5.0.0.2. 判断容器是否启动成功
  • 1.5.0.1. ssh免登陆
  • ,