Shell脚本语言基础

简介: Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

1 基本介绍

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。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表示没有错误,其他任何值表明有错误。

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
相关文章
|
5月前
|
监控 Shell 开发者
Shell 字符串操作:让你的脚本语言更加灵活
在Shell脚本中,字符串操作至关重要,包括计算长度、连接与截取。获取字符串长度使用`${#变量名}`,如`echo ${#name}`显示`4`。字符串连接可通过`$变量名`或`${变量名}`实现,例如`name=alex; str1=$name$age`。字符串截取有多种方式,如`${str:起始位置:长度}`从左边截取,`${str#*chars}`从左边去除匹配的字符,`${str%*chars}`则从右边去除。通过练习这些基本操作,能提升Shell脚本的编写效率。
29 0
|
6月前
|
Shell Linux 算法
Shell编程——弱数据类型的脚本语言快速入门指南
Shell编程——弱数据类型的脚本语言快速入门指南
90 0
Shell编程——弱数据类型的脚本语言快速入门指南
|
Shell
shell脚本之脚本语言脚本
shell脚本之脚本语言脚本
44 1
|
监控 算法 Java
Shell 编程基础与脚本规范
1 编程基础 1.1 程序组成 程序:算法+数据结构 数据:是程序的核心 算法:处理数据的方式 数据结构:数据在计算机中的类型和组织方式
350 0
|
运维 Java Shell
shell基础、脚本设计与运行(少年没有乌托邦,心向远方自明朗)
shell基础、脚本设计与运行(少年没有乌托邦,心向远方自明朗)
166 0
shell基础、脚本设计与运行(少年没有乌托邦,心向远方自明朗)
|
Shell Linux C语言
Shell脚本语言基础
Shell脚本语言基础
|
Shell 测试技术
把书读薄-Shell入门基础
把书读薄-Shell入门基础
101 0
|
Shell Linux
Linux基础服务二进制一键安装shell脚本
Linux基础服务二进制一键安装shell脚本
146 0
|
Java Shell Linux
shell 基础
shell 基础
148 0
|
运维 Java Shell
Shell 脚本编程基础|学习笔记
快速学习 Shell 脚本编程基础.
143 0