0


【Shell编程】Linux Shell编程入门:输入输出、变量、条件判断、函数和运算

在Linux操作系统中,Shell编程是一项非常重要的技能。通过Shell编程,我们可以自动化执行各种任务,提高工作效率。无论是系统管理、数据处理还是软件开发,都离不开Shell脚本的应用。本篇博客将带领大家深入了解Shell编程的基础知识,包括输入输出、变量、条件判断、函数和运算等部分。通过学习这些内容,将能够编写简单而强大的Shell脚本,实现各种自动化任务。无论你是初学者还是有一定经验的开发者,本篇博客都将为你提供详细的解释和实例代码,帮助你快速入门Shell编程。让我们一起开始这个有趣而实用的Shell编程之旅吧!
在这里插入图片描述

文章目录

1. 输入输出

1.1 从标准输入读取用户输入:

#!/bin/bashecho"请输入您的名字:"read name
echo"您好,$name!"

在这个例子中,使用

read

命令从标准输入读取用户输入的名字,并使用

echo

命令将问候语输出到标准输出。

1.2 读取命令行参数:

#!/bin/bashecho"第一个参数是:$1"echo"第二个参数是:$2"

在这个例子中,使用

$1

$2

来获取命令行参数的值,并使用

echo

命令将参数值输出到标准输出。

1.3 使用环境变量:

#!/bin/bashecho"当前用户的主目录是:$HOME"echo"当前工作目录是:$PWD"

在这个例子中,使用

$HOME

$PWD

来获取环境变量的值,并使用

echo

命令将值输出到标准输出。

1.4 从文件中读取数据:

#!/bin/bashwhileIFS=read-r line
doecho"读取到的行:$line"done< input.txt

在这个例子中,使用

while

循环和

read

命令从

input.txt

文件中逐行读取数据,并使用

echo

命令将每行数据输出到标准输出。

1.5 将结果输出到文件:

#!/bin/bashecho"这是一行文本"> output.txt

在这个例子中,使用重定向符号

>

将文本输出到

output.txt

文件中。

1.6 使用管道连接多个命令:

#!/bin/bashls-l|grep".txt"

在这个例子中,使用管道将

ls -l

命令的输出作为

grep ".txt"

命令的输入,用于过滤出包含

.txt

的文件。

1.7 将错误消息输出到文件:

#!/bin/bash

command_not_exist 2> error.txt

在这个例子中,使用重定向符号

2>

command_not_exist

命令的错误消息输出到

error.txt

文件中。

2. 变量

2.1 定义变量:

可以使用

=

符号来定义变量,并为其赋值。变量名和赋值之间不能有空格。例如:

name="John"age=25

2.2 使用变量:

可以通过在变量名前加上

$

符号来使用变量的值。例如:

echo"My name is $name and I am $age years old."

2.3 只读变量:

可以使用

readonly

命令将变量设置为只读,防止其被修改。例如:

readonly name

2.4 删除变量:

可以使用

unset

命令删除变量。例如:

unset age

2.5 特殊变量:

shell编程还提供了一些特殊变量,用于存储有关脚本和环境的信息。例如:

  • $0:当前脚本的文件名。
  • $1$2$3…:命令行参数的值。
  • $#:命令行参数的数量。
  • $*:所有命令行参数的值。
  • $@:所有命令行参数的值(作为独立的字符串)。
  • $?:上一个命令的退出状态。

下面是一个简单的示例代码,演示了如何定义和使用变量:

#!/bin/bashname="John"age=25echo"My name is $name and I am $age years old."readonly name

unset age

在这个例子中,定义了名为

name

age

的变量,并将其值分别设置为"John"和25。然后使用

echo

命令将变量的值输出到标准输出。最后,将

name

变量设置为只读,并删除

age

变量。

3. 条件判断

3.1

if

语句

  1. 使用if语句进行条件判断:
if[ condition ]then# code blockfi

在这个语法中,

condition

是一个条件表达式,可以是比较运算符、逻辑运算符、字符串比较等。如果

condition

为真,则执行

then

后的代码块。

  1. 使用else语句进行条件分支:
if[ condition ]then# code block 1else# code block 2fi

在这个语法中,如果

condition

为真,则执行

then

后的代码块1,否则执行

else

后的代码块2。

  1. 使用elif语句进行多个条件分支:
if[ condition1 ]then# code block 1elif[ condition2 ]then# code block 2else# code block 3fi

在这个语法中,首先判断

condition1

,如果为真,则执行

then

后的代码块1。如果

condition1

为假,再判断

condition2

,如果为真,则执行

then

后的代码块2。如果

condition2

也为假,则执行

else

后的代码块3。

  1. 使用逻辑运算符进行复杂的条件判断:
if[ condition1 ]&&[ condition2 ]then# code blockfi

在这个语法中,

&&

表示逻辑与运算符,如果

condition1

condition2

都为真,则执行

then

后的代码块。

下面是一个简单的示例代码,演示了如何使用条件判断:

#!/bin/bashage=18if[$age-ge18]thenecho"You are an adult."elseecho"You are not an adult."fi

在这个例子中,根据变量

age

的值进行条件判断。如果

age

大于等于18,则输出"You are an adult.“,否则输出"You are not an adult.”。

3.2

case

语句

  1. case语句:case语句用于根据不同的模式匹配执行不同的代码块。以下是case语句的基本语法:
case expression in
    pattern1)# code block 1;;
    pattern2)# code block 2;;
    pattern3)# code block 3;;
    *)# default code block;;esac

在这个语法中,

expression

是要匹配的表达式,

pattern1

pattern2

等是不同的模式,

code block 1

code block 2

等是对应模式的代码块。如果

expression

匹配到某个模式,则执行对应模式的代码块,然后跳出

case

语句。如果没有匹配到任何模式,则执行

default code block

  1. test命令:test命令用于进行条件判断,并返回一个退出状态。以下是test命令的基本语法:
test condition

在这个语法中,

condition

是一个条件表达式,可以是比较运算符、逻辑运算符、字符串比较等。如果

condition

为真,则

test

命令返回退出状态0,否则返回非零退出状态。

test

命令也可以使用方括号

[]

来进行条件判断,例如

[ condition ]

  1. 数值比较:可以使用比较运算符进行数值比较,例如:
  • -eq:等于
  • -ne:不等于
  • -gt:大于
  • -lt:小于
  • -ge:大于等于
  • -le:小于等于
  1. 字符串比较:可以使用字符串比较运算符进行字符串比较,例如:
  • =:相等
  • !=:不相等
  • -z:长度为零
  • -n:长度不为零

下面是一个使用

case

语句和

test

命令进行条件判断的示例代码:

#!/bin/bashfruit="apple"case$fruitin"apple")echo"It's an apple.";;"banana")echo"It's a banana.";;
    *)echo"It's neither an apple nor a banana.";;esacif[$fruit="apple"]thenecho"It's an apple."elseecho"It's not an apple."fi

在这个例子中,首先使用

case

语句根据变量

fruit

的值进行模式匹配。如果

fruit

是"apple",则输出"It’s an apple.“,如果是"banana”,则输出"It’s a banana.“,否则输出"It’s neither an apple nor a banana.”。然后使用

test

命令进行条件判断,如果

fruit

等于"apple",则输出"It’s an apple.“,否则输出"It’s not an apple.”。

4. 运算

在shell编程中,可以进行各种类型的运算,包括数值运算、字符串运算和逻辑运算。下面是一些常用的运算符和运算方式:

4.1 数值运算:

可以使用算术运算符进行数值运算,例如:

  • +:加法
  • -:减法
  • *:乘法
  • /:除法
  • %:取余

可以使用

$((expression))

expr

命令来进行数值运算。例如:

#!/bin/bashnum1=10num2=5# 使用$((expression))进行数值运算result1=$((num1 + num2))echo"Result 1: $result1"# 使用expr命令进行数值运算result2=$(expr $num1 - $num2)echo"Result 2: $result2"

在这个例子中,首先定义了两个变量

num1

num2

,然后使用

$((expression))

进行加法运算和

expr

命令进行减法运算,分别将结果赋值给

result1

result2

,最后输出结果。

4.2 字符串运算:

可以使用字符串运算符进行字符串运算,例如:

  • +:字符串拼接
  • =:字符串相等
  • !=:字符串不相等
  • -z:字符串为空
  • -n:字符串不为空

例如:

#!/bin/bashstr1="Hello"str2="World"# 字符串拼接result1=$str1$str2echo"Result 1: $result1"# 字符串相等判断if[$str1=$str2]thenecho"Strings are equal."elseecho"Strings are not equal."fi# 字符串为空判断if[-z$str1]thenecho"String is empty."elseecho"String is not empty."fi

在这个例子中,首先定义了两个变量

str1

str2

,然后使用

+

运算符进行字符串拼接,将结果赋值给

result1

,然后使用

=

运算符进行字符串相等判断,最后使用

-z

运算符进行字符串为空判断,根据不同的情况输出结果。

4.3 逻辑运算:可以使用逻辑运算符进行逻辑运算,例如:

  • &&:逻辑与
  • ||:逻辑或
  • !:逻辑非

例如:

#!/bin/bashnum=10# 逻辑与运算if[$num-gt0]&&[$num-lt20]thenecho"Number is between 0 and 20."elseecho"Number is not between 0 and 20."fi# 逻辑或运算if[$num-eq0]||[$num-eq20]thenecho"Number is either 0 or 20."elseecho"Number is neither 0 nor 20."fi# 逻辑非运算if![$num-eq0]thenecho"Number is not 0."elseecho"Number is 0."fi

在这个例子中,首先定义了一个变量

num

,然后使用

-gt

-lt

运算符进行数值比较,使用

&&

运算符进行逻辑与运算,使用

-eq

运算符进行数值比较,使用

||

运算符进行逻辑或运算,使用

-eq

运算符进行数值比较,使用

!

运算符进行逻辑非运算,根据不同的情况输出结果。

5. 函数

在shell编程中,可以使用函数来封装一段可重用的代码。函数可以接受参数,执行一系列操作,并返回一个值。下面是一个简单的函数示例:

#!/bin/bash# 定义一个函数hello(){echo"Hello, $1!"}# 调用函数
hello "World"

在这个例子中,首先使用

hello() { ... }

的语法定义了一个名为

hello

的函数。函数中的

$1

表示第一个参数,通过

$1

可以获取到函数调用时传入的参数。在函数中,使用

echo

命令输出一条带有参数的问候语。然后,在函数定义后,使用

hello "World"

的语法调用了这个函数,并传入了一个参数

"World"

。运行脚本后,会输出

Hello, World!

除了接受参数和输出结果,函数还可以执行其他各种操作,例如进行数值运算、字符串处理、文件操作等。下面是一个更复杂的函数示例:

#!/bin/bash# 定义一个函数,计算两个数的和sum(){localnum1=$1localnum2=$2localresult=$((num1 + num2))echo"The sum of $num1 and $num2 is $result."}# 调用函数sum105

在这个例子中,首先使用

sum() { ... }

的语法定义了一个名为

sum

的函数。函数中使用

local

关键字定义了三个局部变量

num1

num2

result

,并分别赋值为传入的两个参数的和。然后,使用

echo

命令输出计算结果。在函数定义后,使用

sum 10 5

的语法调用了这个函数,并传入了两个参数

10

5

。运行脚本后,会输出

The sum of 10 and 5 is 15.

总结

Shell编程是一种在Unix/Linux系统下进行脚本编程的方式。在Shell脚本中,可以使用变量来存储数据,使用条件语句进行逻辑判断,使用循环语句进行重复操作,使用运算符进行数值和逻辑运算,使用函数封装可重用的代码。通过合理使用这些特性,可以实现各种复杂的计算和逻辑操作。Shell脚本可以用于自动化任务、系统管理、数据处理等各种场景。它具有简单易学、灵活高效的特点,是Unix/Linux系统下非常重要的工具之一。无论是初学者还是有经验的开发者,都可以通过Shell编程来简化工作、提高效率。

标签: linux 服务器 运维

本文转载自: https://blog.csdn.net/Goforyouqp/article/details/132065779
版权归原作者 嵌入式小白—小黑 所有, 如有侵权,请联系我们删除。

“【Shell编程】Linux Shell编程入门:输入输出、变量、条件判断、函数和运算”的评论:

还没有评论