Linux shell脚本编写

这篇具有很好参考价值的文章主要介绍了Linux shell脚本编写。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、常用shell脚本指令

echo: 输出指定的文本或变量值到标准输出。

echo "hello"
read: 从标准输入读取用户输入,并将其保存到指定的变量中。
read var

if: 执行条件语句,如果满足指定条件则执行特定操作,否则执行其他操作。

if [ $num -gt 10 ]
then
    echo "num is greater than 10"
else
    echo "num is less than or equal to 10"
fi

for: 循环执行特定操作,每次迭代更新变量值。

for i in {1..10}
do
    echo $i
done

while: 循环执行特定操作,直到指定条件不再满足为止。

while [ $num -lt 10 ]
do
    echo $num
    num=$((num+1))
done

case: 执行多路分支语句,根据指定条件执行不同的操作。

case $var in
    "1")
        echo "var is 1"
        ;;
    "2")
        echo "var is 2"
        ;;
    *)
        echo "var is not 1 or 2"
        ;;
esac

grep: 在指定文件或输入流中查找匹配指定模式的行。

grep "pattern" file.txt

sed: 编辑指定文件或输入流的文本内容,可以进行替换、删除、插入等操作。

sed 's/pattern/replacement/g' file.txt

awk: 处理文本数据,可以进行分割、筛选、计算等操作。

awk '{print $1, $2}' file.txt

二、给出 shell 脚本编写的一般过程

1确定脚本的目的和功能:在编写 shell 脚本之前,需要明确脚本的目的和功能。这有助于确定需要执行哪些命令和脚本的整体结构。

2)写出脚本的基本框架:在写 shell 脚本时,需要先写出脚本的基本框架,包括指定脚本使用的解释器、设置环境变量等。

3编写脚本的命令:根据脚本的目的和功能,编写脚本需要执行的命令。可以使用一些常用的命令,如 cd、ls、echo 等。

4)添加参数和选项:可以在脚本中添加参数和选项,使脚本更加灵活和易用。参数和选项可以通过 $1、$2、$3 等变量进行引用。

5)调试脚本:编写完脚本后,需要进行调试。可以使用一些调试工具,如 bashdb、kshdb、shdb 等。

6)测试脚本:在脚本编写完成后,需要进行测试以确保脚本的正确性和可靠性。可以使用一些测试工具,如 shunit2、bats 等。

7)完善脚本:在完成基本功能后,可以对脚本进行完善,添加一些特性和改进脚本性能

(8)文档化脚本:最后,需要文档化脚本,包括脚本的使用方法、参数和选项等,以方便其他人使用和维护脚本。


三、编写 shell 脚本 p1.sh ,完成向用户输出“Hello!”的问候语。 并根据实验的时 间, 分别给出:“上午好!”或者“下午好!”或者“晚上好!”的问候。(提示:使用date 取得当前的时间,并对 date 进行格式化取得当前时间中的小时, 根据当前的小时来判断上午、 下午还是晚上。 1-11 点上午, 12-18 点下午, 19-24 点晚上。)

给出程序代码、解释及运行结果展示。

linux怎么编写shell脚本,Linux,linux,bash,运维

linux怎么编写shell脚本,Linux,linux,bash,运维  

#!/bin/bash:指定脚本的解释器为 bash。

hour=$(date +"%H"):使用 date 命令获取当前的小时数,并将其赋值给变量 hour。

if [ $hour -ge 1 -a $hour -lt 12 ]; then:如果当前时间在 1 点到 11 点之间,则输出上午好的问候语。

elif [ $hour -ge 12 -a $hour -lt 19 ]; then:如果当前时间在 12 点到 18 点之间,则输出下午好的问候语。

else:如果当前时间在 19 点到 24 点之间,则输出晚上好的问候语。

fi:if 结构的结束标志。

        在上述脚本中,使用 date 命令获取当前的小时数,然后根据小时数判断是上午、下午还是晚上,并输出相应的问候语。通过这种方式,可以根据当前的时间来动态地生成问候语,让脚本更加灵活和实用。


四、编程完成 shell 脚本 p2.sh :如果存在 p1.sh 文件, 则输出信息: p1.sh 文件已 经存在, 并询问是否允许? 如果用户回答: 要运行, 那么给出运行结果;如回到 不要运行, 则退出程序。如果 p1.sh 不存在, 则提示用户先创建文件并退出。

给出程序代码、解释及运行结果展示。

linux怎么编写shell脚本,Linux,linux,bash,运维

linux怎么编写shell脚本,Linux,linux,bash,运维

#!/bin/bash:指定脚本的解释器为 bash。

if [ -e p1.sh ]; then:判断当前目录下是否存在 p1.sh 文件,如果存在,则执行下一步操作;否则输出错误信息并退出程序。

echo "p1.sh 文件已经存在,是否允许运行?(y/n)":输出提示信息,询问用户是否允许运行 p1.sh 文件。

read answer:使用 read 命令获取用户的输入,并将其赋值给变量 answer。

if [ "$answer" = "y" ]; then:判断用户输入的内容是否为 y,如果是,则执行下一步操作;否则输出错误信息并退出程序。

echo "运行 p1.sh 脚本:"``./p1.sh``":输出提示信息,执行 p1.sh 脚本。

else:if 结构的分支结束标志。

echo "用户选择不允许运行 p1.sh 脚本,程序退出。":输出提示信息,表示用户选择不允许运行 p1.sh 脚本,并退出程序。

exit 0:退出程序并返回状态码 0。

else:if 结构的分支结束标志。

echo "p1.sh 文件不存在,请先创建文件。":输出错误信息,表示 p1.sh 文件不存在,请先创建文件。

exit 0:退出程序并返回状态码 0。

        在上述脚本中,使用 -e 选项判断当前目录下是否存在 p1.sh 文件,如果存在则提示用户是否允许运行,如果不存在则提示用户先创建文件。如果用户允许运行 p1.sh 脚本,则执行 p1.sh 文件;如果用户不允许运行,则输出错误信息并退出程序。


五、编写 shell 脚本, 按要求打印输出乘法口诀表,输出用两种方式完成: 一种是 直接在控制台输出; 另一种是输出至文件 result.txt。

1x1=1

1x2=2

2x2=4

1x3=3

2x3=6

3x3=9

1x4=4

2x4=8

3x4=12

4x4=16

1x5=5

2x5=10

3x5=15

4x5=20

5x5=25

1x6=6

2x6=12

3x6=18

4x6=24

5x6=30

6x6=36

1x7=7

2x7=14

3x7=21

4x7=28

5x7=35

6x7=42

7x7=49

1x8=8

2x8=16

3x8=24

4x8=32

5x8=40

6x8=48

7x8=56

8x8=64

1x9=9

2x9=18

3x9=27

4x9=36

5x9=45

6x9=54

7x9=63

8x9=72

9x9=81

给出程序代码、解释及运行结果展示。

linux怎么编写shell脚本,Linux,linux,bash,运维

 linux怎么编写shell脚本,Linux,linux,bash,运维

linux怎么编写shell脚本,Linux,linux,bash,运维

#!/bin/bash:指定脚本的解释器为 bash。

echo "控制台输出:"``for i in {1..9}; do``...``done:使用 echo 命令输出提示信息,并使用两层嵌套的循环打印乘法口诀表,其中外层循环控制行数,内层循环控制列数。

for j in $(seq 1 $i); do``echo -n "$j*$i=$((i*j)) "``done:使用 seq 命令生成从 1 到当前行数的数列,内层循环遍历数列并输出对应的乘法表达式。

echo "":在每一行输出结束时,使用 echo 命令打印一个空行。

echo "文件输出:"``> result.txt``for i in {1..9}; do``...``done:使用 echo 命令输出提示信息,并将输出结果写入到文件 result.txt 中。

echo -n "$j*$i=$((i*j)) "``>> result.txt:使用 echo 命令输出乘法表达式,并使用 >> 运算符将其追加写入到文件 result.txt 中。

echo ""``>> result.txt:在每一行输出结束时,使用 echo 命令打印一个空行,并将其追加写入到文件 result.txt 中。

        注意,上述代码中的 -n 选项表示不换行输出。在控制台输出时需要使用该选项,以避免输出结果混乱。在文件输出时则不需要使用该选项,因为文件中每一行都以换行符结尾。

六、总结

语法错误: shell 脚本中常见的语法错误包括拼写错误、缺少分号、括号不匹配等。解决方式是使用代码编辑器或 IDE 来检查语法错误,并使用 shellcheck 等工具进行代码检查。

文件权限问题: 如果在运行 shell 脚本时遇到“Permission denied”错误,可能是因为该脚本没有执行权限。解决方式是使用 chmod 命令给脚本添加执行权限,例如 chmod +x script.sh。

环境变量问题: shell 脚本中使用的命令和程序需要在环境变量中定义,否则会提示“command not found”等错误。解决方式是在脚本中使用绝对路径或添加环境变量到 PATH 变量中。

调试问题: shell 脚本的调试可以使用 echo 命令输出调试信息,或者使用 set -x 命令启用跟踪模式,以便查看脚本执行的详细过程。还可以使用 shellcheck 等工具进行代码检查和调试。

个人感想:

        Shell 脚本是一种非常实用的工具,可以用来自动化和简化很多日常工作和系统管理任务。学习 Shell 脚本不仅可以提高工作效率,还可以深入了解 Linux 和 Unix 操作系统的基本原理和工作方式。在编写 Shell 脚本时,需要注意语法规范和代码风格,以便保证脚本的可读性和可维护性。此外,使用合适的工具和技巧进行代码调试和测试也非常重要。

linux怎么编写shell脚本,Linux,linux,bash,运维文章来源地址https://www.toymoban.com/news/detail-586631.html

到了这里,关于Linux shell脚本编写的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【Linux运维】shell脚本检查服务器内存和CPU利用率

    在管理服务器时候写了一个 shell脚本,在服务上实现每天凌晨3点查系统的指定文件夹下的容量大小,如果超过10G就要删除3天前的内容,还要时刻查询内存和cpu利用率,如果超过80%就要提示用户出现过载 将以上代码保存为一个.sh文件,然后通过crontab在每天凌晨3点运行即可:

    2024年02月09日
    浏览(67)
  • Linux shell编程学习笔记14:编写和运行第一个shell脚本hello world!

     * 20231020 写这篇博文断断续续花了好几天,为了说明不同shell在执行同一脚本文件时的差别,我分别在csdn提供线上Linux环境 (使用的shell是zsh)和自己的电脑上(使用的shell是bash)做测试。功夫不负有心人,在其中一些实例中可以体现出zsh和bash的对脚本文件支持的差别,收

    2024年02月07日
    浏览(57)
  • C语言,Linux,静态库编写方法,makefile与shell脚本的关系。

    静态库编写: 编写.o文件 gcc -c( 小写) seqlist.c(需要和头文件、main.c文件在同一文件目录下) libs.a- 去掉lib与.a剩下的为库的名称‘s’。 -ls 是指库名为s。 -L 库的路径。 makefile文件编写: 这个是编译后的文件,app文件为编译后的二进制文件。      makefile与shell脚本关系 shell 脚

    2024年02月12日
    浏览(36)
  • Linux【脚本 05】交互式shell脚本编写及问题处理([: ==: unary operator expected)[: ==: 期待一元表达式

    之前写了Windows的cmd脚本用来保存报告文件: 但是有时候服务仅在Linux环境上进行部署,所以要写一个shell脚本进行报告的保存。 2.1 初始版本 简单的参数判断,这里只给出一个分支,脚本save.sh内容如下: 此时如果执行脚本时没有携带参数,将会报错: 这个脚本的问题很多

    2024年02月09日
    浏览(47)
  • Linux shell编程学习笔记44:编写一个脚本,将md5sum命令执行结果保存到变量中,进而比较两个文件内容是否相同

    在  Linux shell编程学习笔记42:md5sum https://blog.csdn.net/Purpleendurer/article/details/137125672?spm=1001.2014.3001.5501 中,我们提到编写一个在Linux系统下比较两个文件内容是否相同的脚本。 基本思路是: 其中有两个难点: 1.文件的md5值的获取 2.md5值的比较 对于第1个难点,我们的解决办法是

    2024年04月10日
    浏览(75)
  • 【Linux | Shell】bash shell 基础命令

    很多 Linux 发行版的默认 shell 是 GNU bash shell。本文将介绍 bash shell 的基本特性,比如 bash 手册、命令行补全以及如何显示文件内容等。 GNU bash shell 是一个程序,提供了对 Linux 系统的交互式访问。它是作为普通程序运行的,通常是在用户登录终端时启动。系统启动的 shell 程序

    2024年02月11日
    浏览(64)
  • Linux之shell编程(BASH)

    Kernel Linux内核主要是为了和硬件打交道 Shell 命令解释器(command interperter) Shell是一个用C语言编写的程序,他是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。 Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核

    2024年01月18日
    浏览(39)
  • 【Linux | Shell命令】bash shell 进程、磁盘、文件处理命令

    上篇文章 bash shell 基础命令 中,介绍了一些与目录、文件相关的 shell 命令,本文继续介绍其他与进程、磁盘、排序、归档相关的命令,读者可以在自己的Linux系统下,实操这些命令,进而收悉并掌握这些命令。本文是一篇学习笔记,很多内容是参考了《Linux命令行与shell脚本

    2024年02月11日
    浏览(62)
  • Linux和Shell笔记-2基本的bash shell命令

    与windows前面标明盘符不同,Linux采用了将文件存储在单个目录结构中,这个目录被称为 虚拟目录 。 Linux使用正斜线( / )而不是反斜线( ) 在文件路径中划分目录。Linux中反斜线用来标识转义字符,因此不能用在文件路径里,这一点和windows不同。 常用的目录名称以及功能介绍

    2024年02月16日
    浏览(48)
  • Linux中阶教程:bash shell基础

    echo 表示打印字符串; read 表示获取用户输入; $ 用于引用变量。 其运行结果为 bash 中的运算符并没有什么特殊的, 运算符 说明 + , - , × , / , % 加减乘除,求余;支持 += 形式 ** , , || 乘方、关系与、或 但是,与常见编程语言不同的是, bash 中的赋值和数学计算需要在

    2024年02月06日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包