因为大概有 2 年没写 shell 了,连 for 循环都忘掉怎么写了,故稍微整理一下日常用的
alias DATE="date +%Y-%m-%d' '%H:%M:%S"
alias busybox="/data/local/tmp/busybox"
n=`expr $n + 1`
let n=n+1
# < <= > >= Less than; less than or equal to; greater than; greater than or equal to.
# == != Equality; inequality (both evaluated left to right).
# 比較運算符:
# -eq equal
# -ge greater than or equal to
# -gt greater than
# -le less than or equal to
# -lt less than
# -ne not equal
# ex:
test 2 -le 3
if test 2 -le 3
then
echo pass
else
echo fail
fi
for i in `seq 3`
do
echo $i
done
# 创建多级目录
mkdir -p ~/test1/test2
# 從全路徑中得到文件名
file_path="a.txt"
# --非貪婪式
name=${file_path%.*}
# --貪婪式
name=${file_path%%.*}
# 從全路徑中得到后綴名
file_path="a.txt"
name=${file_path#*.} --非貪婪式
name=${file_path##*.} --貪婪式
#截取第0個字符后的一個字符
str=abcdefg
echo ${str:0:1}
# 將命令行執行過程存儲到log.txt中
sh -x debug.sh>log.txt 2>&1
# 0 --stdin 標準輸入
# 1 --stdout 標準輸出
# 2 --stderr 標準錯誤
# $0 --獲取shell在命令行啟動的程序的名字
# $# --返回參數的個數
# $$ --返回linux系統分配給該腳本的PID
# 反向过滤
grep -v
# 过滤包含t或f
grep [tf]
# 按数字排序
sort -n
# 反序
sort -r
ls|grep temp
a=`ls`
echo $a
# 输出换行符
echo -e a\\n2
#以=號分隔,并篩選第二列
awk 'BEGIN {FS="="} {print $2}'
#筛选最后一列
awk '{print $NF}'`
#筛选倒数第二列
awk '{print $(NF-1)}'`
# 篩選第二行到最后一行
sed -n '2,$'p
# 变量替换(使用双引号)
sed -e "s/$var1/$var2/g" filename
# 在sed中引用shell变量的四种方法
eval sed ’s/$a/$b/’ filename
sed "s/$a/$b/" filename
sed ’s/’$a’/’$b’/’ filename
sed s/$a/$b/ filename
# 将windows上的脚本,转化成linux格式
yum install -y dos2unix
du -h --max-depth=1