正则表达式
^
表示一行的开头。如:/^#/
以#开头的匹配。$
表示一行的结尾。如:/}$/
以}结尾的匹配。\<
表示词首。 如:\<abc
表示以 abc 为首的詞。\>
表示词尾。 如:abc\>
表示以 abc 結尾的詞。.
表示任何单个字符。*
表示某个字符出现了0次或多次。字符集合。 如:
[abc]
表示匹配a或b或c,还有[a-zA-Z]
表示匹配所有的26个字符。如果其中有^
表示反,如[^a]
表示非a的字符
读取json变量
1 2 3 4 5 6 7 8 9 |
#!/bin/sh # $1:文件名 $2 变量名 注:每个变量必须独占一个行 str=$(grep \"$2\" $1) #找到变量所在的行 "xx": "ss:x,s", str=${str#*:} #裁减掉第一个冒号前所有内容 "ss:x,s", str=${str#*\"} #裁减掉第一个双引号前所有内容 ss:x,s", str=${str%,} #如果最后一个逗号,则删除 ss:x,s" str=${str%\"*} #裁减最后一个双引号后所有内容 ss:x,s echo $str |
字符串替换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#!/bin/sh # 读取文件 file=/root/config.json str=$(cat $file) # 截掉"ip"以前的字符器 xxx“ip": "1.2.3.4"xxxx str=${str#*\"ip\"} # 截掉"以前的字符串 变成1.2.3.4"xxxx str=${str#*\"} # 截掉"以后所有字符串 %%表示最长的匹配 ip=${str%%\"*} str=$(cat $file) str=${str#*\"mac\"} str=${str#*\"} mac=${str%%\"*} str=$(cat $file) str=${str#*\"gateway\"} str=${str#*\"} gateway=${str%%\"*} echo ip:$ip mac:$mac gateway:$gateway |
判断文件
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
#!/bin/sh liveFile=liveRtspServer decoderFile=decoder filepath=/root/ updatapath=/udisk/ # 判断文件是否存在 checkFile(){ if [ -e $1 ]; then echo "$1 ready" return 0 else echo "$1 not ready" return 1 fi } # 判断两个文件是否相同 diffFile(){ diff $1 $2 > /dev/null if [ $? == 0 ]; then echo "Both file are same" return 1 else echo "Both file are different" return 0 fi } # 检测 audoUpdata(){ # 检测U盘里的升级文件 updataFile="${updatapath}${liveFile}" checkFile $updataFile fileReady1=$? if [ 1 == $fileReady1 ]; then updataFile="${updatapath}${decoderFile}" checkFile $updataFile fileReady1=$? if [ ! 0 == $fileReady1 ]; then echo "not find updata file exit.." exit 0 else localFile="${filepath}${decoderFile}" fi else localFile="${filepath}${liveFile}" fi diffFile $updataFile $localFile if [ 0 == $? ]; then echo "upgrade file..." rm "${filepath}${decoderFile}" rm "${filepath}${liveFile}" cp $updataFile $filepath fi } if [ -e "/dev/sda1" ]; then # mount /dev/sda1 /udisk -t vfat audoUpdata else exit 0 fi |