立即登录

shell脚本基础语法 Shell脚本语言基础

11/28 09:24:27

shell脚本基础语法 Shell脚本语言基础

Shell脚本语言基础 1 基本介绍

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言shell脚本基础语法,又是一种程序设计语言。

2 Hello World 2.1 文件命名和头部标识、执行方式

文件命名:一般以xx.sh为shell脚本文件的名称

头部标识:一般在文件内容的第一行加入#!/bin/bash

执行方式:一般使用命令./xx.sh执行shell脚本文件

2.2 编写HelloWorld

ymx@ymx-PC:~/Desktop/files/shellTest$ sudo touch hello.sh
ymx@ymx-PC:~/Desktop/files/shellTest$ ls
hello.sh
ymx@ymx-PC:~/Desktop/files/shellTest$ sudo vim hello.sh 
###########文件内容##############
#!/bin/bash
echo Hello World!
###########文件内容结束##############
ymx@ymx-PC:~/Desktop/files/shellTest$ sudo chmod 777 hello.sh 
ymx@ymx-PC:~/Desktop/files/shellTest$ ./hello.sh 
Hello World!

3 引入变量 3.1 定义变量

变量名 = 变量值

例如:str = “Hello Shell”

注意:等号两边不能加空格

3.2 使用变量

操作命令 $变量名

例如:echo $str

3.3 示例

ymx@ymx-PC:~/Desktop/files/shellTest$ sudo touch args1.sh
ymx@ymx-PC:~/Desktop/files/shellTest$ sudo chmod 777 args1.sh 
ymx@ymx-PC:~/Desktop/files/shellTest$ vim args1.sh 
##########写入内容##########
#!/bin/bash
str="Hello Shell"
echo $str
##########写入内容结束##########
ymx@ymx-PC:~/Desktop/files/shellTest$ ./args1.sh 

Hello Shell

4 参数使用 4.1 参数接收

$0表示所执行的文件名

$1表示接收的第一个参数

$2表示接收的第二个参数

4.2 基本使用

ymx@ymx-PC:~/Desktop/files/shellTest$ sudo touch args2.sh
ymx@ymx-PC:~/Desktop/files/shellTest$ sudo chmod 777 args2.sh 
ymx@ymx-PC:~/Desktop/files/shellTest$ vim args2.sh 
##########开始写入#########
#!/bin/bash 
echo "执行文件名为$0"
echo "第一个输入参数为$1"
echo "第二个输入参数为$2"
##########写入结束#########
ymx@ymx-PC:~/Desktop/files/shellTest$ ./args2.sh 1 2 
执行文件名为./args2.sh
第一个输入参数为1
第二个输入参数为2

4.3 几个特殊参数 参数处理说明

$#

传递到脚本的参数个数

$*

以一个单字符串显示所有向脚本传递的参数

$$

脚本运行的当前进程ID号

$!

后台运行的最后一个进程的ID号

$@

与$*相同辅助论坛,但是使用时加引号,并在引号中返回每个参数。

$-

显示Shell使用的当前选项,与set命令功能相同。

显示最后命令的退出状态。0表示没有错误shell脚本基础语法,其他任何值表明有错误。

5 Shell数组 5.1 定义数组

方式一:

array_1=(1 2 3 4 5)

方式二:

array_2[0]=21
array_2[1]=22
array_2[2]=23
array_2[3]=24
array_2[4]=25

注:shell只有一维数组

5.2 使用数组

(1)使用数组

数组名称[index]:获取第index个元素,从0开始

数组名称[*]:获取全部元素

(2)案例

[root@iZ1608aqb7ntn9Z shellTest]# touch array.sh
[root@iZ1608aqb7ntn9Z shellTest]# vim array.sh 
#########写入内容#########
#!/bin/bash
  
array_1=(1 2 3 4 5)
array_2[0]=21
array_2[1]=22
array_2[2]=23
array_2[3]=24
array_2[4]=25
echo array_1 first element is ${array_1[0]} and all elements are [${array_1[*]}]
echo array_2 first element is ${array_2[0]} and all elements are [${array_2[*]}]
#########写入结束#########
[root@iZ1608aqb7ntn9Z shellTest]# ./array.sh 
array_1 first element is 1 and all elements are [1 2 3 4 5]
array_2 first element is 21 and all elements are [21 22 23 24 25]

5.3 数组长度

echo array_1 length is ${#array_1[*]}
echo array_1 length is ${#array_1[@]}

6 流程控制 6.1 判断语句 6.1.1 if语句

(1)基本语法

if [ 表达式 ]
then
    语句1
elif [ 表达式 ]
    语句2
else
    语句3
fi

(2)案例

[root@iZ1608aqb7ntn9Z shellTest]# vim if.sh
#####################写入内容##########################
#!/bin/bash
  
a=$1
b=$2
if [ $a == $b ]
then
        echo "a 等于 b"
elif [ $a -gt $b ]
then
        echo "a 大于 b"
elif [ $a -lt $b ]
then
        echo "a 小于 b"
else
        echo "没有符合的条件"
fi
#####################写入内容结束##########################
[root@iZ1608aqb7ntn9Z shellTest]# ./if.sh  2 4
a 小于 b
[root@iZ1608aqb7ntn9Z shellTest]# ./if.sh  8 4
a 大于 b
[root@iZ1608aqb7ntn9Z shellTest]# ./if.sh  4 4
a 等于 b

6.1.2 case语句

(1)基本语法

case 变量 in
值1)  语句1

    ;;
值2)  语句2
    ;;
值3)  语句3
    ;;
esac

(2)案例

[root@iZ1608aqb7ntn9Z shellTest]# vim case.sh
#####################写入内容##############################
#!/bin/bash
  
i=$1
case $i in
1) echo "print one"
        ;;
2) echo "print two"
        ;;
3) echo "print three"
        ;;
esac
#####################写入内容结束##########################
[root@iZ1608aqb7ntn9Z shellTest]# ./case.sh 1
print one
[root@iZ1608aqb7ntn9Z shellTest]# ./case.sh 2
print two
[root@iZ1608aqb7ntn9Z shellTest]# ./case.sh 3
print three

6.2 循环语句 6.2.1 for循环

(1)基本语法

for 变量 in 变量1 变量2 ......
do
     语句
done

(2)案例

[root@iZ1608aqb7ntn9Z shellTest]# vim for.sh 
#####################写入内容##############################
#/bin/bash

  
for val in 1 2 3 4 5
do
        echo $val
done
#####################写入内容结束##########################
[root@iZ1608aqb7ntn9Z shellTest]# ./for.sh 
1
2
3
4
5

6.2.2 while循环

(1)基本语法

while(( 表达式 ))
do 
    语句
done
或者 
while true 
do
    语句
done

(2)案例

[root@iZ1608aqb7ntn9Z shellTest]# vim while.sh 
#!/bin/bash
  
i=1
while(( $i<=3 ))
do
        echo $i
        let "i++"
done
[root@iZ1608aqb7ntn9Z shellTest]# ./while.sh 
1
2
3

来源:【九爱网址导航www.fuzhukm.com】 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

最新资讯