shell 编程

#shell编程
$1 ~$9 参数, 10以上的参数${10}
$# 参数个数
$* ,$@ , 参数列表, 不加双引号,2个一样,加双引号后,$*是整体
$? 上一次执行结果的返回值,或函数返回值

#运算
$((表达式)) 或 $[表达式]

#条件
[空格 表达式 空格]
$1 -eq 100 ==
$1 -lt 100 <
$1 -gt 100 >
$1 -ge 100 >=
$1 -le 100 <=
$1 -ne 100 !=

#if

if [条件表达式]
  then
elif
[条件表达式]
  then
else
fi

#case

case $1 in

1)
  xxx
  ;;
2)
  xxx
  ;;
*)
  xxx
  ;;
esac

# for

for((i=1;i<100;i++))
do
  xxx
done

for i in $@
do
  xxx
done

#while

while [条件表达式]
do
  xxx
  增量表达式
done

#函数
#定义函数
function 函数名(){}


#shell 工具
cut
-d 分隔符
-f 取第几列
cut -d " " -f 1 cut.txt 
cut -d " " -f 2,3 cut.txt 

#awk

awk [选项参数] 'pattern1{action1}  pattern2{action2}...' filename

-F 指定输入文件折分隔符

awk -F: '/^root/{print $7}' passwd

awk -F: '/^root/{print $1","$7}' passwd

awk -F : 'BEGIN{print "user, shell"} {print $1","$7} END{print "dahaige,/bin/zuishuai"}' passwd

awk -v i=1 -F: '{print $3+i}' passwd

awk -F: '{print "filename:"  FILENAME ", linenumber:" NR  ",columns:" NF}' passwd 

ifconfig eth0 | grep "inet addr" | awk -F: '{print $2}' | awk -F " " '{print $1}'


#注意: 赋值语句=两边不能加空格,条件语句[]内左右必须有空格
#while

sum=0
i=0
while [ $i -le 100 ]
do
 sum=$[$sum+$i]
 i=$[$i+1]
done

echo "结果:$sum"


#if
if [ $1 -eq 1 ]
then
 echo 'hello beijing!!!'
elif [ $1 -eq 2 ]
then
 echo 'hello shanghai!!!'

else
 echo 'hello wuhan!!!' 
fi

#fun
#定义函数
function sum()
{
 total=$[$1+$2]
# return $total
}

#控制台输入
read -t 5 -p "5秒内输入第一个加数:" n1
read -t 5 -p "5秒内输入第二个加数:" n2

#调用函数
sum $n1 $n2

#echo "结果:$?"
echo "结果:$total"

#/for i

#从1加到100
sum=0
for((i=0;i<=100;i++))
do
 sum=$[$sum+$i]
done

echo "和为:$sum"


#for in

for i in "$@"
do
 echo "我的女神:$i"
done


for j in "$*"
do
 echo "我的女神:$j"
done


#case
case $1 in

1)
 echo '小明哥!!!'
;;

2)
 echo '菲儿姐!!!'
;;

*)
 echo 'baby face!!!'
;;

esac

 

posted @ 2021-05-24 08:35  wangheng1409  阅读(43)  评论(0编辑  收藏  举报