Shell 编程基础

2021-08-01  本文已影响0人  芝兰之室也

概念:

实际上是一个应用程序,是人与Unix系统进行交互的接口;编写脚本时,也可以理解成一种命令语言或者程序语言。

Shell种类:

Shell应用程序

Shell脚本编程不需要额外的安装编译器,它可以直接用编辑器直接编辑,然后直接在Shell上直接运行即可。通常,我们在编写脚本时,在第一行需要用#!来指定解释器来运行Shell脚本,比如,#!/bin/sh。

1、变量定义

(1) 变量的默认数据类型是字符串类型;
(2) 等号=和变量及被赋的值之间不能有空格;
(3) 数据运算用$[运算表达式]形式;

2、字符串操作

#!/bin/bash
a="Hello World"
echo ${#a} #获取字符串长度
echo ${a:6:3} #从下标6开始截取3字
echo ${a/ll/hh} #将字符串中的ll替换为hh
echo ${a/or/} #删除子字符串or
echo ${a^^} #全部转化成大写
echo ${a,,} #全部转化成小写

3、数字运算
命令方式主要有let declare expr等命令;

let 命名后直接跟上运算表达式即可:

a="4"
b="2"
let c1=${a}+${b}
echo "a + b =" ${c1}

expr 注意两点:

#!/bin/sh
a=4
b=2
c1=$(expr ${a} + ${b})
echo "a + b =" ${c1}

declare -i ,将变量声明为整数型:

#!/bin/sh
a="4"
b="2"
declare -i c1=${a}+${b}
echo "a + b =" ${c1}

自增自减:

let c1++
echo "c1 =" ${c1}

小数运算:在默认情况下shell是不支持小数运算,可以借助Linux平台下的bc计算器进行小数运算。

a=1.411
b=1.332

c1=`echo "$a+$b"|bc`
c4=`echo "scale=3;$a/$b"|bc` #scale用来指定小数的位数

echo $c1
echo $c4

4、数组

a=(hello world code)
echo ${a[0]}
echo ${a[1]}
echo ${a[2]}

echo ${a[*]}
echo ${a[@]}

echo ${#a[*]}

5、数值关系运算

注意:
中括号两边是有空格隔开,运算符和变量之间也有空格隔开

#!/bin/sh
a=1
b=2

if [ $a -eq $b ];then
 echo "yes"
else
 echo "no"
fi

6、字符串关系元算

#!/bin/sh
a="hello"
b="hello"

echo "a = b ?"
if [ $a = $b ];then
 echo "yes"
else
 echo "no"
fi

7、逻辑运算

8、条件语句

a=2

if [ $a == 1 ];then
    echo "a = 1"
elif [ $a == 2 ];then
 echo "a = 2"
else
 echo $a
fi
#!/bin/sh

read -p "please in put a number:" num

case $num in 
"1")
 echo "Start 1th flow"
 ;;
"2")
 echo "Start 2th flow"
 ;;
*)
 echo "Do nothing"
esac

9、循环语句

a=("hello" "world" "hello" "shell")

for((i=0;i<4;i++))
do 
 echo ${a[i]}
done
a=("hello" "world" "hello" "shell")

for v in ${a[*]}
do 
 echo $v
done
a=("hello" "world" "hello" "shell")
i=0

while [ $i -lt 4 ]
do 
 echo ${a[i]}
 let i++
done

与while循环恰好相反的循环until循环,在until循环中条件表达式不成立才会进入循环。

a=("hello" "world" "hello" "shell")
i=0

until [ $i -ge 4 ]
do 
 echo ${a[i]}
 let i++
done

对于until循环语句来说,一般没有上面的几种循环语句较为常用。

a=("公司A" "公司B" "公司C" "公司D")

select v in ${a[*]}
do
 case $v in 
  "公司A")
   echo "恭喜您,你选择了公司A !"
   break
   ;;
  "公司B")
   echo "恭喜您,你选择了公司B !"
   break
   ;;
  "公司C")
   echo "恭喜您,你选择了公司C !"
   break
   ;;
  "公司D")
   echo "恭喜您,你选择了公司D !"
   break
   ;;
  *)
   echo "您没有选择任何一个公司,请重新选择!"
  esac
done

10、函数

function test1() {
 echo "this is a function"
 return 0
}

test1 #调用函数

输入参数:

function test2() {
 echo "parameter1 : $1"
 echo "parameter2 : $2"
 return 3
}

test2 1 2 #调用函数
echo $? #获取函数返回值

11、文件包含
有的时候某个功能可能被多个脚本使用,这时就需要在将这个功能放到一个公共的文件中,需要这个功能的脚本直接包含这个公共的文件即可,这就是文件的包含,同样的Shell也是支持文件包含的。

使用.或source加上文件名来包含文件

先建一个文件test_one.sh:

#test_one.sh
var1=1

再建一个文件test_two.sh:

#test_two.sh
var2=2

再建一个文件,包含test_one.sh和test_two.sh这两个文件:

source ./test_one.sh
source ./test_two.sh

echo "file one var1=${var1}"
echo "file two var2=${var2}"
上一篇下一篇

猜你喜欢

热点阅读