shell编程(2)
-
shell 变量基本用法及常用符号使用
-(1)将 主提示符改为 用户的主目录名
-(2)将字符串 DOS file c:>$student*赋值给变量 x,并显示出来
-(3)在 shell 命令终端输入 likes=(cosmos galaxy moon); likes[6]=mars,然后使用 echo 分别显示以下表达式的值,并结合结果,写出表达式的作用。① ${likes[*]}② ${likes[@]}③ ${#likes[*]}④ ${#likes[@]}⑤ ${#likes}⑥ ${#likes[0]}
①② 得到非空数组元素 ③④得到数组中非空元素的个数 ⑤⑥得到数组中下标为0的元素的长度
-(4)在shell命令终端输入name=Phoenix,然后使用echo显示表达式①,观察结果;然后输入命令unset name,再输入表达式①观察结果。结合两次结果,写出表达式的作用。① ${name:-hello}
如果name变量不为空,取变量name的值,否则取值为hello
-(5)在shell命令终端输入name='/usr/share/doc/apg/php.tar.gz',然后使用echo分别显示表达式①和②的值,观察结果。修改 name 的值,让name='/etc/apt/sources.list.d',再次使用 echo 分别显示表达式①和②的值,观察结果。结合结果,写出表达式的作用。① ${name%%.*} ② ${name%.*}
①name值的末尾如果和‘.’匹配,去掉最多匹配的部分,剩下的即为表达式的值
②name的值如果和‘.’匹配,去掉最少匹配的部分,剩下的即为表达式的值
-(6)在 shell 命令终端输入 name=/usr/bin/X11,然后使用 echo 分别显示表达式①和②的值,观察结果。修改 name 的值,让 name='/etc/apt/sources.list.d',再次使用 echo 分别显示表达式①和②的值,观察结果。结合结果,写出表达式的作用。① ${name#*/} ② ${name##*/}
①如果name值的开头与‘/’匹配,则去掉匹配最少的部分,剩下的即为表达式的值
②如果name值的开头与‘/’匹配,则去掉匹配最多的部分,剩下的即为表达式的值
-(7)已知某同学提交的博客文章页面地址 address 如下:address='http://www.cnblogs.com/xyz/p/8569001.html'通过字符串匹配,如何得到其博客主页地址:homepage='http://www.cnblogs.com/xyz'写出由变量 address 得到变量 homepage 的 shell 命令实现。
-
shell 脚本分析
-(1)使用 vim/gedit 编写 shell 脚本文件 ex1.sh
在 shell 命令终端分 3 次运行该脚本,观察其运行结果。① 第 1 次运行:. ex1.sh② 第 2 次运行:. ex1.sh best wishes③ 第 3 次运行:. ex1.sh god bless u
① 整个 shell 脚本的功能是什么?
将句子倒叙输出
② 第 8 行、第 9 行、第 11 行的功能是什么?
第 8 行:将cmd通过循环变为“echo + 输入句子的倒叙”第 9 行:将count的值每次减一再赋值给count。第 10 行:两次解释,第一次:将cmd的值翻译出来:echo $3$2$1,第二次:执行翻译出来的句子。
③ 每次运行时,脚本中的 while 循环分别执行几次?
2、3次
④ 运行. ex1.sh god bless u 时,while 循环体第 1 次被执行时,第 8 行执行后变量 cmd 的值为?
cmd $3
-(2)使用 vim/gedit 编写 shell 脚本文件 ex2.sh
在命令终端输入. ex2.sh jsj,(实际执行时,请将jsj替换为您电脑中的登录用户名)结合结果及帮助信息
① line6 中,who | grep “^$1”的功能?
判断用户是否存在
② line8~10 功能?
将第一个参数重定向到LimitString中,向其发送Hello hadoop
-(3)使用 vim/gedit 编写 shell 脚本文件 ex3.sh
在命令终端输入. ex3.sh,结合结果及帮助信息,回答下列问题
该脚本的功能是?
该脚本功能是将当前文件夹下的所有.sh格式的文件复制,新文件名为为原文件名加上后缀".BACKUP--日期--时间"。
-(4)使用 vim/gedit 编写 shell 脚本文件 ex4.sh
在 shell 命令终端分 3 次运行该脚本,观察其运行结果。① 第 1 次运行:. ex4.sh② 第 2 次运行:. ex4.sh /etc/apt/sources.list③ 第 3 次运行:. ex4.sh /etc/apt/sources.list ex4.sh
① line4-10 中函数 NL 的功能?
line4-10 中函数 NL的作用是将用户输入的值保存在变量x中,然后输出行号和x的值
② line14 中,条件测试满足时,脚本执行的功能是?
条件测试满足时,脚本执行函数NL的功能
③ line17-line21,这部分脚本的功能是?
将参数传递给NL调用,再shift删除这个参数,其余参数左移一位 -
shell 脚本编写
-(1)第 4 章 思考题 4.9
-(2)第 4 章 思考题 4.11
-(3)第 4 章 思考题 4.12
-(4)第 4 章 思考题 4.18
-(5)猜数字游戏具体要求如下:① 写一个函数 random0_100 生成 0~100 之间的随机数② 用户从键盘输入竞猜数字,如果猜错了,提示用户所猜数字偏大或偏小,用户继续猜,直至猜对为止。
4.总结与体会
大致了解并掌握了shell程序编写和执行方法,shell特殊字符的用法,shell字符串的处理,shell变量、数组、环境变量、位置变量的基本用法,shell中条件测试和关键字 if, case, while, for, until 的用法,shell函数的使用方法,shell脚本的调试方法,shell命令编程解决实际问题。