shell 4

echo ${变量:开始:长度},开始从0

# phone=13734220123
# echo ${phone}
13734220123
# echo ${#phone} #指这个变量一共有多少位
11
# echo ${phone::5} #第一位默认从0开始,截5位数
13734
# echo ${phone:0:5} #和上一条命令是相同的,都是从0开始
13734
# echo ${phone:0:3}
137
# echo ${phone:2:5}
73422
# echo ${phone:2:3}
734
# echo ${phone:1:3}
373


]# echo $phone
13734220123
# expr substr $phone 1 3 #第一位默认是1,截3位数
137
# expr substr $phone 3 3
734
# expr substr $phone 1 3
137

# expr substr $phone 1 6
137342


# echo $phone
13734220123
# echo $phone | cut -b 1-3 从1开始,起始数字-最后一个数字。连续的数字用-来表示
137
# echo $phone | cut -b 3-5
734
# echo $phone | cut -b 1,3,5,7,9 用逗号来把多个不连续的数字显示出来
17421
--------------------------------------
# x=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
62个字符0-61或1-62
$RANDOM%62
$RANDOM%62+1=1-62
随即提取一位密码
生成一个8位的随机密码,不是8个密码

提示:
a=1
# b=2
# b=$b$a
# echo $b
21


# cat /root/1.sh
#!/bin/bash
x=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

for i in {1..8}
do
num=$[RANDOM%62]
tmp=${x:$num:1}
pass=$pass$tmp
done

echo $pass
-----------------------------------------
# echo $phone
13734220123
# echo ${phone/2/5}
13734520123
# echo ${phone//2/5}
13734550153
# echo ${phone/220/yyyy}
13734yyyy123
# echo ${phone/220/} #不写默认是想把替换的为空,就是删除
13734123
# echo $phone #并"不改变"变量的值
13734220123
------------------------------------------
# A=`head -1 /etc/passwd`
# echo $A
root:x:0:0:root:/root:/bin/bash

# A=`head -1 /etc/passwd`
# echo $A
root:x:0:0:root:/root:/bin/bash
# echo ${A#root}
:x:0:0:root:/root:/bin/bash
# echo ${A#root:}
x:0:0:root:/root:/bin/bash
# echo ${A#*:}
x:0:0:root:/root:/bin/bash
# echo ${A##*:}
/bin/bash
# echo ${A##*0}
:root:/root:/bin/bash
# echo ${A##*0:}
root:/root:/bin/bash
# echo ${A##*b}
ash
---------------------------------------
# echo ${A%:*}
root:x:0:0:root:/root
# echo ${A%%:*}
root
# echo $A
root:x:0:0:root:/root:/bin/bash
--------------------------------------
# vim /root/test1/for2.sh
#!/bin/bash
for i in `ls /root/test1/*.$1`
do
mv $i ${i%.*}.$2
done
--------------------------------------
# vim /root/test1/for.sh
#!/bin/bash
for i in `ls /root/test1/*.doc`
do
mv $i ${i%.*}.txt
done
-------------------------------------
ssh -o StrictHostKeyChecking=no 192.168.4.5 #连接远程不需要提示加密y/n

Warning: Permanently added '192.168.4.5' (ECDSA) to the list of known hosts.
[email protected]'s password:
Last login: Wed Oct 24 15:16:58 2018 from 192.168.4.254


cat .ssh/known_hosts #
192.168.4.5 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLbeZn0oixXQQEAEclKnr1zideN3MmtD9EfVZwn7NJu8qcJ/UJB4DnHsAfe+y0hOkv0bF+ek23RuH3YfeT4WWMY=


# rm -rf .ssh/known_hosts
[root@5 ~]# ssh -X [email protected]
The authenticity of host '192.168.4.5 (192.168.4.5)' can't be established.
ECDSA key fingerprint is SHA256:59Byua15gv4TAVEm7YutMtmgXfxGTYbzSfO84kICu0E.
ECDSA key fingerprint is MD5:7e:6e:95:ed:84:fe:5b:8e:26:94:73:9b:c3:4b:90:cb.
Are you sure you want to continue connecting (yes/no)?
--------------------------------------
注意事项:
expect脚本的最后一行默认不执行
如果不希望ssh时出现yes/no的提示,远程时使用如下选项:
# ssh -o StrictHostKeyChecking=no server0
------------------------------------------------
echo ${变量:开始:长度}
echo ${变量/旧/新}
echo ${变量#*:}
echo ${变量##*:}
echo ${变量%:*}
echo ${变量%%:*}
echo ${变量:-word}
------------------------------------------------
expect << EOF
spawn 程序
expect "abc" {send "hehe/n"}
EOF

正则 基本
^ 开始
$ 结尾
[ ] 集合
[ ^ ] 对集和取反
. 任意单个字符
* 匹配前一个字符出现了任意次包括0【*不能单独使用】
\{n,m\} 匹配前一个字符出现了n到m次
\{n,\} 匹配前一个字符出现了n次以上
\{n\} 匹配前一个字符出现了出现了n次

猜你喜欢

转载自www.cnblogs.com/summer2/p/10788024.html
今日推荐