shell脚本常用代码片段

编写可靠shell脚本的八个建议

声明一个文件是bash脚本文件

1
#!/usr/bin/env bash

注意: 需要写在文件第一行

获取当前执行脚本的绝对路径

1
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

无论脚本从哪里调用,怎么调用,上面代码都能非常有用的获得脚本存储位置绝对路径;
除非涉及的文件是一个连接文件(symlink),那么需要如下的操作:

1
2
3
4
5
6
7
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"

查找某个名称的所有进程并全部停止掉

1
ps -ef | grep -v grep | grep java | awk '{print $2}' | xargs kill -9 >>/dev/null 2>&1

杀掉所有java程序

一行命令实现代码行数统计

1
2
find . -name "*.java"|xargs cat|grep -v -e ^$ -e ^\s*\/\/.*$|wc -l
去注释版只是去掉以//开头的注释,对于以/* */包含的注释并没有去掉
0%