脚本特殊使用方法
1. ssh公钥远程登录首次跳过 yes认证
1
ssh -o PubkeyAuthentication=yes -o stricthostkeychecking=no
2. 提取字符串中的数字保存到变量中
1
2
3
4
5
6
7
8
匹配数字
echo "helloworld20180719" | tr -cd "[0-9]"
匹配小写字符
echo "helloworld20180719" | tr -cd "[a-z]"
匹配大小写字符
echo "helloworld20180719" | tr -cd "[a-z][A-Z]"
3. 关闭history记录
1
2
set +o history 关闭history记录
set -o history 打开history记录
4. read使用小窍门
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
-p 提示输入
-e 在获取用户输入的时候,对功能键进行编码转换,不会直接显式功能键对应的字符
-r 原样读取(Raw mode),不把反斜杠字符解释为转义字符
-s 静默模式(Silent mode),不会在屏幕上显示输入的字符。当输入密码和其它确认信息的时候,这是很有必要的。
-t seconds 设置超时时间,单位为秒。如果用户没有在指定时间内输入完成,那么 read 将会返回一个非 0 的退出状态,表示读取失败
====================================================================
1. 提示输入
read -ep "请输入服务编号: " input_view_num
2. 获取多变量
#前提是 return_name返回值返回的是两个值
function return_name()
{
echo "aaa bbb"
}
read a b < <( return_name )
3.可以对输入的值通过上下键返回
(1).引用bash环境时加 -i,如
#!/bin/bash -i
此时会返回shell终端的历史命令
(2). 引用时不加 -i,默认的
#!/bin/bash
此时只会翻出当前进程的历史命令
### 最主要的部分
# 原理: 在每一次执行完成之后将命令输出到历史命令中
read -ep "请输入服务编号: " input_deploy
history -s "$input_deploy"
5. for循环
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# for循环
#方法一
for((i=1;i<=10;i++));
do
echo $(expr $i \* 3 + 1);
done
#方法二
for i in $(seq 1 10)
do
echo $(expr $i \* 3 + 1);
done
#方法三
for i in {1..10}
do
echo $(expr $i \* 3 + 1);
done
#方法四
awk 'BEGIN{for(i=1; i<=10; i++) print i}'
####################################################################
#设置不以空格换行
## for 循环时 会以 空格 分割,修改其分割方式 IFS
## 保存当前: IFS_old=$IFS
## 修改以 \n 回车符为分割符: IFS=$'\n'
## 恢复原样: IFS=$IFS_old
IFS_old=$IFS
IFS=$'\n'
for line in `cat filename`;
do
echo "$line"
done;
IFS=$IFS_old
6. 秒级定时
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
第一种: 脚本
#执行间隔
STEP=2
for (( i = 0; i < 60; i=(i+${STEP}) ))
do
ping www.baidu.com
sleep ${STEP}
done
第二种: crontab sleep
crontab -e
* * * * * /bin/date
* * * * * sleep 20; /bin/date
* * * * * sleep 40; /bin/date
本文由作者按照
CC BY 4.0
进行授权