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 晚上。)

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

  

#!/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 不存在, 则提示用户先创建文件并退出。

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

#!/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

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

 

#!/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 脚本时,需要注意语法规范和代码风格,以便保证脚本的可读性和可维护性。此外,使用合适的工具和技巧进行代码调试和测试也非常重要。

  • 3
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值