shell脚本的一些记录

194 阅读2分钟

命令如何执行

执行命令

错误输出

运行命令达到输出的效果:

当我们执行命令时候,我们想把错误信息输入到一个文件中

TTY="错误信息文件"
RunCommand() {
	//如果文件不为空,就写入到文件
	if [[ -n $TTY ]]; then
//添加eval强制转义,避免错误信息中有关键词
		eval "$@" &>$TTY
    else
    	//如果为空就当做普通命令去执行
    	"$@"
    fi
    //这边也可以通过全局变量去控制是否去输出
    echo "-----$@------"
}

sh find_api.sh -d ./mm.xcframework -s -f -lib --keyword "main"

  • '-d':在这个目录寻找指定api
  • '-s':搜索源码
  • '-f':搜索framework
  • '-lib':搜索.a、.lib这些库
  • '--keyword':我要搜索的关键字

--开头的叫长参数

  • 开头的叫短参数

可以支持多个参数同时搜索

sh脚本对于终端来说其实就是一个函数

case执行判断条件支持正则和通配符

-gt:大于

shift:可以让参数向右发生位移,每次调用shift时,他将所有位置上颚参数减一。也就是会从第一个参数开始依次往后读取,直到读取到最后一个为止,例如$1开始读取的是第一个参数,shift一下,他就变成读取第二个参数

查找指定类型文件:

在目录A中查找.framework结尾的文件 find + 目录A + -name ".framework"

#find #find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件 的文件并对之采取相关的操作。 #该命令提供的寻找条件可以是一个用逻辑运算符 not、and、or 组成的复合条件。

    1. or:逻辑或,在命令中用 -o 表示。该运算符表示只要所给的条件中有一个满足 时,寻找条件就算满足。
    1. and:逻辑与,在命令中用 -a 表示,是系统缺省的选项,表示只有当所给的条 件都满足时,寻找条件才算满足。
    1. not:逻辑非,在命令中用 ! 表示。该运算符表示查找不满足所给条件的文件 。
    1. 当使用很多的逻辑选项时,可以用括号把这些选项括起来。为了避免 Shell本身对括号引起误解,在话号前需要加转义字符 \ 来去除括号的意义。
  • -name '字串' 查找文件名匹配所给字串的所有文件,字串内可用通配符 *、?、[ ]。 假如需要多个条件,需要将条件语句用括号括一下,并且括号需要转义字符转一下,并且前后用空格隔开
find ./mm.xcframework \( -name "*.framework" -o -name "*.o" \)
  • grep:默认大小写敏感