字符串处理 - ${变量名 替换符号 匹配条件}
从左向右删除
# 1、语法 ${变量名##匹配条件} # 2、示例 directory="/home/tarena/mysql" # 注意{}中不需要加空格 echo ${directory##*/} --> mysql echo ${directory#*/} --> home/tarena/mysql
从右向左删除
# 1、语法 ${变量名%%匹配条件} # 2、示例 directory="/home/tarena/mysql" echo ${directory%%/mysql} --> /home/tarena echo ${directory%/*} --> /home/tarena echo ${directory%%/*} --> ""
案例
# 1、输出系统中的前10个用户 方法1: #!/bin/bash # root:x:0:0:root:/root:/bin/bash for line in `head -10 /etc/passwd` do echo ${line%%:*} done 方法2: awk # root:x:0:0:root:/root:/bin/bash awk -F ‘:‘ ‘{print $1}‘ /etc/passwd | head 方法3: sed ‘s/原内容/新内容/g‘ sed ‘s/:.*//g‘ /etc/passwd | head
练习批量修改文件名 : 把当前目录下的.txt文件全部改为.doc文件
# 创建10个 .txt 文件 touch file{1..10}.txt #!/bin/bash for filename in `ls *.txt` do # file1.txt --> file1.doc name=${filename%.txt} mv $filename $name.doc done
shell磨练
1、依次提示用户输入3个整数,脚本根据数字大小依次排序输出 3个数字
# shell实现 #!/bin/bash read -p "请输入第一个整数:" n1 read -p "请输入第二个整数:" n2 read -p "请输入第三个整数:" n3 # 1.保证n1是最小值 if [ $n1 -ge $n2 ];then temp=$n1 n1=$n2 n2=$temp fi if [ $n1 -ge $n3 ];then temp=$n1 n1=$n3 n3=$temp fi # 2.判断n2和n3 if [ $n2 -ge $n3 ];then temp=$n2 n2=$n3 n3=$temp fi echo "排序后:$n1 $n2 $n3" # python n1 = int(input(‘第一个:‘)) n2 = int(input(‘第二个:‘)) n3 = int(input(‘第三个:‘)) L = [n1,n2,n3] L.sort() print(L)
# 提示 - Linux中数组使用 # Linux数组: (元素1 元素2 元素3) 元素之间用空格隔开 game=("石头" "剪刀" "布") ${game[0]} # 电脑随机出拳 ${game[$[RANDOM%3]]}
shell代码实现
#!/bin/bash # 1.电脑出拳 game=("石头" "剪刀" "布") computer=${game[$[RANDOM%3]]} # 2.用户出拳 echo "+---------------------+" echo "+ 1.石头 +" echo "+ 2.剪刀 +" echo "+ 3.布 +" echo "+---------------------+" read -p "请出拳(1/2/3):" you # 3.做判断 case $you in 1) if [ $computer == "石头" ];then echo "平局" elif [ $computer == "剪刀" ];then echo "你赢" else echo "计算机赢" fi ;; 2) if [ $computer == "石头" ];then echo "计算机赢" elif [ $computer == "剪刀" ];then echo "平局" else echo "你赢" fi ;; 3) if [ $computer == "石头" ];then echo "你赢" elif [ $computer == "剪刀" ];then echo "计算机赢" else echo "平局" fi ;; *) echo "出拳无效!请输入1/2/3" ;; esac
python代码实现
#!/usr/bin/env python3 import random all_list = [‘石头‘,‘剪刀‘,‘布‘] win_list = [[‘石头‘,‘剪刀‘],[‘剪刀‘,‘布‘],[‘布‘,‘石头‘]] computer = random.choice(all_list) you = input(‘1.石头\n2.剪刀\n3.布\n请出拳(1/2/3):‘) if all_list[int(you)-1] == computer: print(‘平局‘) elif [all_list[int(you)-1],computer] in win_list: print(‘你赢‘) else: print(‘计算机赢‘)
3、每2秒中检测一次MySQL数据库的连接数量
# mysqladmin命令 mysql服务器管理任务的工具,它可以检查mysql服务器的配置和当前工作状态 mysqladmin -uroot -p123456 status
代码实现
#!/bin/bash while : do count=`mysqladmin -uroot -p123456 status | awk ‘{print $4}‘` echo "`date +%F` 并发连接数为: $count" sleep 2 done
4、根据md5校验码,检测文件是否被修改
# 1、生成md5的文件校验码 md5sum nginx.conf /etc/*.conf 做md5校验码,md5file.txt # 2、diff命令: 两个文件找不同 diff 文件1 文件2 # 文件1第30行 change 文件2第30行 30c30 < 291e59190bb2c52e01fa7fa9ebb2ba01 /etc/test.conf --- > 7cdda976172d4819ac60401235647806 /etc/test.conf
代码实现
#!/bin/bash for file in `ls /etc/*.conf` do md5sum $file >> md5log2.txt done
5、备份MySQL数据库
# 数据库备份命令 mysqldump -hIP -uroot -p123456 库 > xxx.sql
代码实现
#!/bin/bash user="root" password="123456" dbname="mysql" date=$(date +%Y%m%d) # ! 和 -d之间要加空格 [ ! -d /home/tarena/backup ] && mkdir /home/tarena/backup mysqldump -u"$user" -p"$password" "$dbname" > /home/tarena/backup/"$dbname"-${date}.sql
6、随机生成8为密码-字母、数字、__
# 1.获取字符串长度: ${#变量名} # 2.字符串索引切片: ${变量名:起始索引:1} key=‘‘ length=${#key} ${key:$[RANDOM%length]:1}
代码实现
#!/bin/bash key=‘qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM_‘ length=${#key} pass=‘‘ for i in {1..8} do pass=$pass${key:$[RANDOM%length]:1} done echo $pass
原文:https://www.cnblogs.com/maplethefox/p/11438711.html