为了捞取日志,自己用python写了一些东西,大致套路就是读取写入文件的操作,放到linux上跑。实际使用时发现要操作的文件有时比较大,直接打开文件找需要的东西可能会有一些效率问题。所以学习一下shell脚本,看一下能不能用这种方法来直接监听日志取到需要的东西。以下是自己学习时的一些笔记。
shell脚本第一行一般都是如下内容。#!开头,告诉系统使用什么解释器(使用哪一种Shell)
#!/bin/bash
两种方法。
作为可执行程序的话,cd到相应目录后,运行以下命令
chmod +x ./test.sh #使脚本具有执行权限 ./test.sh #执行脚本。一定要写成./test.sh,意味着在当前目录找。
# 如果直接写test.sh,系统会去PATH里找test.sh,而PATH里一般只有/bin, /sbin, /usr/bin,/usr/sbin
或者可以直接sh test.sh。这样的话不用在第一行指定解释器
变量定义:等号两端不能有空格
变量可以指定为只读变量。只读变量的值不可以再改变。前面加readonly(比如,readonly aaa)
变量使用:在变量名前加dollar符。变量名外用大括号括起来,以表明变量的边界(比如${aaa}像这样)
只有使用变量时才加$。如果是给变量重新赋值则不需要
删除变量(非只读变量才可以被删除):
unset variable_name
字符串可以用单引号、双引号,也可以不用引号。
区别:
单引号:单引号内内容原样输出,变量无法生效。单引号内不能有单个的单引号,必须成对出现
双引号:可以有变量,可以有转义字符
字符串长度
${#variable_name} # 井号获取长度
截取字符
${variable_name:startInd:endInd} # 截取第startInd个字符到第endInd个字符
查找字符串
echo `expr index "$variable_name" io` # 查找字符串中第一个符合条件的字符位置。io表示查找条件是i或者o # 注意expr后面是`不是‘
bash只支持一维数组
未完待续
原文:https://www.cnblogs.com/wuhuohanke/p/10083798.html