第1关:Hello EduCoder !
任务描述
本关任务:欢迎来到shell
脚本世界,为了见证shell
脚本的神奇,本小节带领大家写第一个shell脚本,希望脚本能够在右侧的命令行窗口中输出hello EduCoder
。
接下来让我们一起去开启shell
脚本的快乐之旅吧!
相关知识
Shell是一个用 C 语言编写的程序,它是用户使用 Linux
的桥梁。Shell
既是一种命令语言,又是一种程序设计语言。为了更好地学习shell
编程,您需要对linux
系统命令有一定的了解,熟悉常用的命令,如:vim、echo、chmod
等。
shell 语言编写的程序通常都非常轻巧,比如我想编写一个在屏幕上显示Hello World !
程序:
#!/bin/bash
echo "Hello World !"
说明:#!
是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 shell
。echo
命令用于向窗口输出文本内容。
Shell 脚本的运行通常有两种方法: 1、作为可执行程序运行
chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本
注意:一定要写成 ./test.sh
,而不是 test.sh
,./
的作用其实就是告诉系统就在当前目录查找,否则系统会去PATH
路径中查找有没有test.sh
的文件,而系统默认情况下只有 /bin
, /sbin
, /usr/bin
,/usr/sbin
等在 PATH
中,很难找到。
2、作为解释器参数运行,这种运行方式是直接运行解释器,其参数就是 shell 脚本的文件名,如:
/bin/sh test.sh
这种方式运行的脚本,不需要在第一行指定解释器信息。
编程要求
请按照要求,完成以下实践内容。 1、在/opt/
目录下创建第一个shell
脚本 文件命名为 test.sh
; 2、编写test.sh
脚本,让其输出Hello EduCoder
(通过 vim 编辑器编辑); 3、给/opt/test.sh
赋予执行权限; 4、运行test.sh
文件。
测试说明
编写完脚本之后,点击测评,这里点击评测按钮及等于在 linux 终端执行cd /opt ; ./opt/test.sh
命令,因此要注意执行权限的赋值 平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
开始你的任务吧,祝你成功!
#####请按照要求,完成以下实践内容##### 打开右边的命令行,进入命令行 按以下要求编写第一个脚本/opt/test.sh: cd /opt/ 1.在/opt/目录下创建第一个shell脚本 文件命名为 test.sh; vim /opt/test.sh 2.编写test.sh脚本,让其输出Hello EduCoder(通过vim编辑器编辑); #! /bin/bash echo "Hello EduCoder" 3.给/opt/test.sh赋予执行权限; chmod +x ./test.sh 4.点击“评测”按钮; (点击“评测”按钮 执行的操作相当于执行了 cd /opt/; ./test.sh)
第2关:shell变量
#####请按照要求,完成以下实践内容#####打开右边的命令行,进入命令行按以下要求编写第二个脚本/opt/test2.sh:1.创建 一个脚本 /opt/test2.sh , 已知向 /opt/test.sh 传递参数 "www" "educoder" "net" 三个字符串。2. /opt/test.sh 需要实现如下功能:输出传递的参数的个数并且输出第一个参数比如: 向 /opt/test2.sh传递 是"a" "b" "c" "d",则执行bash /opt/test2.sh a b c d 输出的结果应该是 4 a ,"4"为参数的个数;"a"为第一个参数3.编写完脚本之后 点击“评测”按钮; (点击“评测”按钮 执行的操作相当于执行了 cd /opt/; ./test2.sh)
第3关:shell 字符串
#!/bin/bashstring1="Hello www.educoder.net, hello linux! hello Shell ,Hello CNCF,hello Kubernetes,redis"#********* Begin *********###1、str1 为 替换string1中第一次出现的 "Hello"为"hello"后的字符串str1=${string1/Hello/hello}##2、str2 为 替换string1中所有的"Hello"为"hello"后的字符串str2=${string1//Hello/hello}##3、str3 为 删除string1中的字符串"Kubernetes,"后的字符串str3=${string1/Kubernetes,/}##4、变量letnth为字符串string1的长度,判断string1长度 完成如下代码:##如果超过50则输出 "Length over 50" 如果小于等于50则输出"Length less than 50 "lenth=${#string1}if [ $lenth -gt 50 ]; then echo "Length over 50"else echo "Length less than 50"fi#********* End *********#echo $str1echo $str2echo $str3