代码改变世界

shell编程2

2018-06-04 21:54  何维  阅读(335)  评论(0编辑  收藏  举报

 

1. shell 变量基本用法及常用符号使用

(1) 将主提示符改为用户的主目录名

(2)将字符串DOS       file        c:>\$student\*赋值给变量x,并显示出来

(3) 在 shell 命令终端输入likes=(cosmos galaxy moon); likes[6]=mars,然后使用 echo 分别显示以下表达式的值,并结合结果

 

 

(1)echo ${likes[*]} 显示likes数组里的所有值

(2)echo ${likes[@]}显示likes数组里的所有值

(3)echo ${#likes[*]} 统计likes数组中元素的个数

(4)  echo ${#likes[*]} 统计likes数组中元素的个数

 (5) echo ${#likes} 可能是统计空格之前的字符串的长度

(6) echo ${#likes[0]} 统计数组第一个元素的字符串的长度

没有删除变量之前输出的是之前name的字符串

删除变量之后 输出hello

查阅资料后:是从某个地方开始截取字符串 

在 shell 命令终端输入name=fire,然后使用 echo 显示表达式①,观察结果;然后输入命令unset name,再输入表达式①观察结果。结合两次结果,写出表达式的作用。

 

  变量名name=fire,不为空,表达式1的结果为name的值,即fire

     unset name是删除变量的值,此时name值为hello

5、

${name%%.*} 从name结尾开始删除和.之后匹配的最长字符串

${name%.* } 从name结尾开始删除和.之后匹配的最短字符串

6、

${name#*/} 从name开始的地方 删除/之前最短的字符串

${name##*/}从name开始的地方 删除/之前最短的字符串

(7) 已知某同学提交的博客文章页面地址 address 如下:

address='http://www.cnblogs.com/xyz/p/8569001.html' 通过字符串匹配,如何得到其博客主页地址: homepage='http://www.cnblogs.com/xyz'

写出由变量 address 得到变量 homepage 的 shell 命令实现

 

2. shell 脚本分析

(1) 使用 vim/gedit 编写 shell 脚本文件 ex1.sh

 

结合 3 次运行结果,分析脚本代码,在实验报告中总结以下内容:

① 整个 shell 脚本的功能是什么?

答:整个脚本的功能是将参数倒序输出。参数有几个,while就循环几次。

② 第 8 行、第 9 行、第 11 行的功能是什么?

答:第8行指将输入参数个数给cmd,第9行指每循环一次,$count数减少1,第11行指运行cmd命令。

③ 每次运行时,脚本中的while 循环分别执行几次?

答:有几个参数,则while运行几次,所以脚本中的while分别运行0,2,3次。

④ 运行.ex1.shgodblessu 时,while 循环体第 1 次被执行时,第 8 行执行后变量 cmd 的值为?

 答:while第一次被执行时,第8行执行后cmd的值为echo $3。

(2) 使用 vim/gedit 编写 shell 脚本文件 ex2.sh

① line6 中,who | grep “^$1”的功能?

答:用于判断用户是否存在。

② line8~10 功能?

 答:line8~10是将第一个参数重定向到LimitString中,向其发送Hello hadoop。

(3) 使用 vim/gedit 编写 shell 脚本文件 ex3.sh

 

该脚本的功能是?

 答:该脚本功能是将当前文件夹下的所有.sh格式的文件复制,新文件名为为原文件名加上后缀".BACKUP--日期--时间"。

 (4)使用 vim/gedit 编写 shell 脚本文件 ex4.sh

① line4-10 中函数NL 的功能?

答:line4-10 中函数 NL的作用是将用户输入的值保存在变量x中,然后输出行号和x的值。

② line14 中,条件测试满足时,脚本执行的功能是?

答:条件测试满足时,脚本执行函数NL的功能。

③ line17-line21,这部分脚本的功能是?

答:将参数传递给NL调用,再shift删除这个参数,其余参数左移一位。

3. shell 脚本编写

(1)

 

 

(2)

 

(3)

 

(4)

 

(5)

 

总结:这次实验量比较大,做的也比较时间长,可能细节方面没有很好得处理。