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

这篇具有很好参考价值的文章主要介绍了【Shell编程】Linux Shell编程入门:输入输出、变量、条件判断、函数和运算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

1. 输入输出

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

#!/bin/bash

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

在这个例子中,使用read命令从标准输入读取用户输入的名字,并使用echo命令将问候语输出到标准输出。

1.2 读取命令行参数:

#!/bin/bash

echo "第一个参数是:$1"
echo "第二个参数是:$2"

在这个例子中,使用$1$2来获取命令行参数的值,并使用echo命令将参数值输出到标准输出。

1.3 使用环境变量:

#!/bin/bash

echo "当前用户的主目录是:$HOME"
echo "当前工作目录是:$PWD"

在这个例子中,使用$HOME$PWD来获取环境变量的值,并使用echo命令将值输出到标准输出。

1.4 从文件中读取数据:

#!/bin/bash

while IFS= read -r line
do
  echo "读取到的行:$line"
done < input.txt

在这个例子中,使用while循环和read命令从input.txt文件中逐行读取数据,并使用echo命令将每行数据输出到标准输出。

1.5 将结果输出到文件:

#!/bin/bash

echo "这是一行文本" > output.txt

在这个例子中,使用重定向符号>将文本输出到output.txt文件中。

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

#!/bin/bash

ls -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/bash

name="John"
age=25

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

readonly name

unset age

在这个例子中,定义了名为nameage的变量,并将其值分别设置为"John"和25。然后使用echo命令将变量的值输出到标准输出。最后,将name变量设置为只读,并删除age变量。

3. 条件判断

3.1 if语句

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

在这个语法中,condition是一个条件表达式,可以是比较运算符、逻辑运算符、字符串比较等。如果condition为真,则执行then后的代码块。

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

在这个语法中,如果condition为真,则执行then后的代码块1,否则执行else后的代码块2。

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

在这个语法中,首先判断condition1,如果为真,则执行then后的代码块1。如果condition1为假,再判断condition2,如果为真,则执行then后的代码块2。如果condition2也为假,则执行else后的代码块3。

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

在这个语法中,&&表示逻辑与运算符,如果condition1condition2都为真,则执行then后的代码块。

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

#!/bin/bash

age=18

if [ $age -ge 18 ]
then
    echo "You are an adult."
else
    echo "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是要匹配的表达式,pattern1pattern2等是不同的模式,code block 1code 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/bash

fruit="apple"

case $fruit in
    "apple")
        echo "It's an apple."
        ;;
    "banana")
        echo "It's a banana."
        ;;
    *)
        echo "It's neither an apple nor a banana."
        ;;
esac

if [ $fruit = "apple" ]
then
    echo "It's an apple."
else
    echo "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/bash

num1=10
num2=5

# 使用$((expression))进行数值运算
result1=$((num1 + num2))
echo "Result 1: $result1"

# 使用expr命令进行数值运算
result2=$(expr $num1 - $num2)
echo "Result 2: $result2"

在这个例子中,首先定义了两个变量num1num2,然后使用$((expression))进行加法运算和expr命令进行减法运算,分别将结果赋值给result1result2,最后输出结果。

4.2 字符串运算:

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

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

例如:

#!/bin/bash

str1="Hello"
str2="World"

# 字符串拼接
result1=$str1$str2
echo "Result 1: $result1"

# 字符串相等判断
if [ $str1 = $str2 ]
then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi

# 字符串为空判断
if [ -z $str1 ]
then
    echo "String is empty."
else
    echo "String is not empty."
fi

在这个例子中,首先定义了两个变量str1str2,然后使用+运算符进行字符串拼接,将结果赋值给result1,然后使用=运算符进行字符串相等判断,最后使用-z运算符进行字符串为空判断,根据不同的情况输出结果。

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

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

例如:

#!/bin/bash

num=10

# 逻辑与运算
if [ $num -gt 0 ] && [ $num -lt 20 ]
then
    echo "Number is between 0 and 20."
else
    echo "Number is not between 0 and 20."
fi

# 逻辑或运算
if [ $num -eq 0 ] || [ $num -eq 20 ]
then
    echo "Number is either 0 or 20."
else
    echo "Number is neither 0 nor 20."
fi

# 逻辑非运算
if ! [ $num -eq 0 ]
then
    echo "Number is not 0."
else
    echo "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() {
    local num1=$1
    local num2=$2
    local result=$((num1 + num2))
    echo "The sum of $num1 and $num2 is $result."
}

# 调用函数
sum 10 5

在这个例子中,首先使用sum() { ... }的语法定义了一个名为sum的函数。函数中使用local关键字定义了三个局部变量num1num2result,并分别赋值为传入的两个参数的和。然后,使用echo命令输出计算结果。在函数定义后,使用sum 10 5的语法调用了这个函数,并传入了两个参数105。运行脚本后,会输出The sum of 10 and 5 is 15.

总结

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

到了这里,关于【Shell编程】Linux Shell编程入门:输入输出、变量、条件判断、函数和运算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 「Linux系列」Shell 输入/输出重定向

    在Shell中,输入重定向允许你将一个文件或命令的输出作为另一个命令的输入,而不是从标准输入(通常是键盘)读取。这是通过特殊符号 实现的。使用输入重定向,你可以将文件的内容作为命令的输入,从而执行特定的操作。 下面是一个Shell输入重定向的案例: 假设你有一

    2024年04月15日
    浏览(46)
  • linux的shell script判断用户输入的字符串,判断主机端口开通情况

    判断输入的字符串是否是hello 图一运行报错 检查发下,elif  判断里面少个引号,哎,现在小白到了,一看就会,一写就错的时候了,好像现在案例比较简单,行数较少。 案例二 if 结合test 判断主机端口 802,2,21,21,25是否通过,明天吧

    2024年02月06日
    浏览(44)
  • Linux系统Shell脚本编程之条件语句

    Shell 环境根据命令执行后的返回状态值 \\\" $? \\\" 来判断是否执行成功,当返回值为0时表示成功,否则表示失败或异常(非0值)。 使用专门的测试工具 test 命令,可以对特定条件进行测试,并根据返回值(值为0)来判断是否成立。 test命令格式 文件测试指的是根据给定的路径名

    2024年01月25日
    浏览(74)
  • Linux centos7 bash编程(循环与条件判断)

    在编程训练中,循环结构与条件判断十分重要。 根据条件为真、为假,确定是否执行循环。 有时,根据条件的真假结果,决定执行哪些语句,这就是分支语句。 为了训练分支语句与循环语句,我们设计一个案例: 求一组数字:两数平方和为另一数平方 符合条件时,有三个

    2024年02月10日
    浏览(46)
  • 【Linux】shell编程(一) 变量

    目录 【Linux基础】shell编程(一) 变量 什么是shell编程 如何运行shell脚本 第一行 #!/bin/bash 第一行叫什么? WHAT IS THIS LINE CALLED? 为什么要加这个,有什么用? shell的变量 变量的赋值和使用 变量替换 位置变量 BASH引号规则 小结 简单的命令可以在命令行中直接输入,但是复杂的

    2024年02月08日
    浏览(37)
  • linux shell编程规范和变量

    目录 一、shell简述 二、shell脚本 三、重定向 四、管道符 五、变量 六、shell脚本基本知识  七、预定义变量小实验                       一、shell简述 概念:shell解释器,翻译官功能,与内核进行沟通的应用程序。 把代码翻译为二进制,让内核处理,负责接收用户输入的操

    2024年02月06日
    浏览(36)
  • Linux:Shell脚本和Shell变量的入门指南

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z05Ey0Tt-1687331750572)(https://example.com/linux-shell-image.png)] Shell脚本是一种用于自动化任务和批处理的脚本语言,主要用于Unix和Linux系统。它提供了一种简单而强大的方式来执行系统命令、处理文件、控制流

    2024年02月10日
    浏览(49)
  • shell中的条件判断

    在shell中经常会用到条件语句,常用的条件语句有if、while、case等 if判断 实例如下: while循环 实例如下: case多条件 实例如下:

    2024年02月08日
    浏览(37)
  • shell脚本----条件判断语句

    文件测试 test命令 测试表达是是否成立,若成立则返回0,否则返回其他的数 用法一:test 条件表达式 用法二:[ 条件表达式 ] 选项 含义 -e 测试目录或者文件是否存在 -d 测试是否为目录 -f 测试是否为文件 -r 测试当前用户是否有读的权限 -w 测试当前用户是否有写的权限 -x 测

    2024年02月01日
    浏览(43)
  • Linux shell编程学习笔记6:查看和设置变量的常用命令

    上节我们介绍了变量的变量命名规则、变量类型、使用变量时要注意的事项,今天我们学习一下查看和设置变量的一些常用命令,包括变量的提升,有些命令在之前的实例中已经使用过了。 语法格式:echo [参数] [输出内容] 常用参数: -e:支持反斜线控制的字符转换(具体参

    2024年02月07日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包