1.查看进程
#!/bin/bash
#打印当前运行的线程,输入参数为线程的关键字
ps -eLF | grep $1
终端输入 chmod +x test.sh 然后 ./test.sh netease ,即可打印网易云的进程;
直接用bash test.sh亦可
2.输入输出重定向
先将 test.text重定向为 输入,再将其中 含有 "jk"的行筛选出来,最后将筛选出的行进行排序
cat <test.text |grep jk|sort
3.shell是一门动态类型,弱类型语言;
定义时不使用显示的数据声明,变量类型操作根据需求不同而不同
#!/bin/bash
a=2345
echo "a=$a"
let "a+=1" #计算a=a+1
echo "a+1=$a" #2346
echo
b=${a/23/BB} #用BB代替a中的23,因此自动转换为字符串类型
echo "b=$b" #BB46
let "b+=1" #b是字符串,所以+1 转换为1
echo "b+1=$b" #b=1
echo
c=BB34
echo "c=$c"
d=${c/BB/23} #将BB用23代替,自动转换为整型
echo "d=$d"
let "d+=1"
echo "d+1=$d" #d+1=2335
echo
#如果e是null
e=""
echo "e=$e"
let "e++"
echo "e++,e=$e" #e=1
echo
#如果未声明的变量呢
echo "f=$f"
let "f++"
echo "f++,f=$f" #f=1
echo
exit 0
4.关于if,$0,$1,$2
#!/bin/bash
#输入参数$1 $2 $3,$0代表脚本自己
if [ $# -ne 2 ] ; #如果输入脚本参数数量不等于2
then
echo "Usage:$0 string file";
exit 1;
fi
grep $1 $2 ; #在($2文件)中找$1
if [ $? -ne 0 ] ; #上一个命令成功,则$?=0.否则为1(失败)或2(出错)
then
echo "Not find \"$1\" in $2";
exit 1;
fi
echo "Find \"$1\" in $2";
exit 0;
运行: bash test.sh hello data.txt
4.关于while和for
while读取多个文件,并cat输出内容
#!/bin/bash
while [ $# -ne 0 ] ;
do
cat $1
shift #默认shift 代表shift1,即将$1丢弃,S2赋值给$1,依次类推
done
or
#!/bin/bash
for file in $*
do
cat $file
done
运行 chmod +x test.sh ./test.sh data.txt data1.txt