Shell编程

调用脚本

1、在用户目录 ~/bin/ 下创建脚本1

cd ~/bin/
vim addNum
#!/bin/bash

#变量和等号之间不可以有空格
NUM1=$1
NUM2=$2 

RES=$NUM1+$NUM2
echo "$RES"

测试脚本1

[lyh@localhost bin]$ chmod 744 ./addNum
[lyh@localhost bin]$ ./addNum 3 4
[lyh@localhost bin]$ 7

创建脚本2

[lyh@localhost bin]$ vim test

在脚本2中调用脚本1

如果两个脚本不在同一个目录,需要使用脚本的完整路径

#!/bin/bash

echo "第1种方式调用脚本1: "
source ./addNum 3 4

echo "第2种方式调用脚本1: "
./addNum 2 5

测试脚本2

[lyh@localhost bin]$ chmod 744 test
[lyh@localhost bin]$ ./test
第1种方式调用脚本1:
7
第2种方式调用脚本1:
7

while 循环

案例-输出0到n的和

双括号

双括号命令允许在比较过程中实用高级数学表达式。比如我们的位移运算符(<< >>)、布尔运算符(& | ~ )、逻辑运算符(&& || )以及(后增val++ 后减val-- 先增++val 先减--val)等。                                                                --《linux命令行与shell脚本编程大全》

#!/bin/bash

SUM=0
i=0
#也可以写做 (($i <= $n))
while [ $i -le $1 ]
do
    SUM=$(($SUM+$i))
    ((i++))
done

echo "SUM=$SUM"

数组+for循环

输出数组内容的两种方式

echo ${arr[@]}

案例-数组冒泡排序

用户输入数组中的内容,通过冒泡排序输出排序后的结果

#!/bin/bash

#预先定义全局变量
arr=("$@")
echo "您输入了 $*"
echo "数组内容:"
echo ${arr[@]}
echo "for循环输出数组内容: "
for i in $@;do
echo $i
done

find_max (){
# 获取数组长度
len=${#arr[@]}

# 冒泡排序
for ((i=0;i<$len-1;i++)); do
    for ((j=0;j<$len-1-$i;j++)); do
        if [ ${arr[$j]} -gt ${arr[$j+1]} ]
         then
            temp=${arr[$j]}
            arr[$j]=${arr[$j+1]}
            arr[$j+1]=$temp
        fi
    done
done
}

find_max
echo "排序结果:"
echo ${arr[@]}

运行结果

Shell编程_第1张图片

case

输入1、2输出周一或周二,输入别的输出"other"。

#!/bin/bash

case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other"
;;
esac

你可能感兴趣的:(linux,运维,服务器)