一、常用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 脚本时,需要注意语法规范和代码风格,以便保证脚本的可读性和可维护性。此外,使用合适的工具和技巧进行代码调试和测试也非常重要。文章来源:https://www.toymoban.com/news/detail-586631.html
文章来源地址https://www.toymoban.com/news/detail-586631.html
到了这里,关于Linux shell脚本编写的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!