工作中经常用到shell命令,记录下常用的备查:

1 系统变量$HOME $PWD(当前路径) $USER $SHELL

2 自定义变量

a=1 #注意=附近没有空格
echo $a
1

3 特殊变量$n,$#,$*,$@,$?

#!/bin/bash
#输入参数
echo $0 $1 $2 $3
#打印参数个数
echo $#
#打印所有参数,整体
echo $*
#打印所有参数,区分
echo $@
#上一条命令是否执行成功
echo $?

4 运算符

a=$[(1+2)*4]#(没有空格)
echo $a
expr 1 \* 2 #(有空格)

5 条件判断

[ 2 -ge 1 ] #注意[]有空格2>=1 greater equal
echo $? #0代表执行成功,非0代表没有正常执行

6 流程控制

#if语句注意空格
if [ $1 -eq 1 ];then
echo "this is 1"
elif [ $1 -eq 2 ]
then
echo "this is 2"
fi

#case 语句
case $1 in
1)
echo "case 1"
;;
2)
echo "case 2"
;;
*)
echo "case other"
;;
esac

#for循环
s=0
for((i=1;i<=100;i++))
do
        s=$[$s+$i]
done
echo $s #5050

#for循环2-打印所有输入参数
#所有参数放在一行
for i in "$*"
do 
    echo "input $i"
done

#一个参数一行
for j in $@
do 
    echo "input $j"
done

#while循环
i=0
s=0
while [ $i -le 100 ]
do
    s=$[$s+$i]
    i=$[$i+1]
done
echo $s #output 5050

7 read读取控制台输入

#!/bin/bash
#8秒内输入名字
read -t 8 -p "input your name " NAME
echo $NAME

8 函数

basename /home/1.txt
output: 1.txt
basename /home/1.txt .txt
output 1 #截取文件名称

dirname /home/1.txt
output /home #截取文件路径

#自定义函数

#!/bin/bash
function sum()
{
        s=0
        s=$[$1+$2]
        echo $s
}

read -p "input param1:" p1
read -p "input param2:" p2
sum $p1 $p2

9 Shell tool

cut,sed,awk,sort