天天看点

shell基础,原来脚本并不难!

------一个小计算器-----

#!/bin/bash

#this

read -p "请输入第一个整数:" ONE

read -p "请输入第二个整数:" TWO

read -p "请输入运算符:" TH

echo "$ONE$TH$TWO=$(($ONE $TH $TWO))"

---------一个IF单分支语句-----

read -p "输入目录:" DIR

if [ ! -d $DIR ]

then mkdir -p $DIR

fi

echo "Done"

---------一个IF双分支语句---

ping -c1 -i0.1 -W1 $1

if [ $? -eq 0 ]

then echo "$1 is UP!"

else echo "$1 is DOWN!"

=================if 嵌套================

#!/bin/bash

#

read -p "请输入你的成绩:" A

if [ $A -le 10 ]

then

echo "恭喜进入决赛"

read -p "请输入性别(boy/girl):" SEX

if [ $SEX = boy ]

echo "进入男子组"

else

echo "进入女子组"

echo "很遗憾,你被淘汰"

-------以下是CASE语句----------

export LC_ALL=C //区分大小写

read -p "请输入字符:" KEY

case $KEY in

esac

-----------------以下是函数------------------

sum(){

read -p "请输入第一个整数:" NUM1

read -p "请输入第二个整数:" NUM2

echo "你输入的两个数为:$NUM1和$NUM2。"

SUM=$(($NUM1+$NUM2))

echo "两个数的和是:$SUM"

#return $(($NUM1+$NUM2)) //使用返回值的方法,最大不可以大于255

}

sum

#echo "两个数的和是:$?"

---------以下是FOR循环----------------

for IP in 192.168.80.{5..183}

do

ping -c1 -i0.2 -W1 $IP &> /dev/null

then echo "$IP is UP!"

else echo "$IP is down!"

done

----------以下是例子------------

for USER in test{1..10}

useradd $USER

echo "${USER}abc" | passwd --stdin $USER &> /dev/null

cat /etc/passwd

-----------以下是WHILE例子-----------

i=1

PRE=test

while [ $i -le 10 ]

useradd $PRE$i

echo "123" | passwd --stdin $PRE$i &> /dev/null

let i++

echo $i

===================until循环语句=====================

##条件不满足循环,一旦满足则停止##

计算1~50的和值

[root@localhost ~]# vi sum1to50_until_v1.sh

##filename:sum1to50_until_v1.sh

i=0;s=0

until [ $i -eq 50 ]

let "i=$i+1";let "s=$s+$i"

echo 'sum(1..50)='$s

===========================双重循环==================

H=1

while [ $H -le 10 ]

L=1

while [ $L -le $H ]

echo -n "$L"

let L++

echo""

let H++

最终输出:

1

12

123

1234

12345

123456

1234567

12345678

123456789

12345678910

===================shell 数组========================

Shell数组

1、获取数组长度

[root@localhost ~]# arr_number=(1 2 3 4 5);

[root@localhost ~]# arr_length=${#arr_number[*]}

[root@localhost ~]# echo $arr_length

5

2、读取某下标赋值

[root@localhost ~]# arr_index2=${arr_number[2]}

[root@localhost ~]# echo $arr_index2

3

3、数组遍历

[root@localhost ~]# for v in ${arr_number[@]}

echo $v 2 4