shell编程(2)

  1. shell 变量基本用法及常用符号使用
    -(1)将 主提示符改为 用户的主目录名
    1354377-20180606101931156-650561982.png
    -(2)将字符串 DOS file c:>$student*赋值给变量 x,并显示出来
    1354377-20180606102027333-1994374843.png

      -(3)在 shell 命令终端输入 likes=(cosmos galaxy moon); likes[6]=mars,然后使用 echo 分别显示以下表达式的值,并结合结果,写出表达式的作用。① ${likes[*]}② ${likes[@]}③ ${#likes[*]}④ ${#likes[@]}⑤ ${#likes}⑥ ${#likes[0]}

    1354377-20180606102238719-525664325.png
    ①② 得到非空数组元素 ③④得到数组中非空元素的个数 ⑤⑥得到数组中下标为0的元素的长度

      -(4)在shell命令终端输入name=Phoenix,然后使用echo显示表达式①,观察结果;然后输入命令unset name,再输入表达式①观察结果。结合两次结果,写出表达式的作用。① ${name:-hello}

    1354377-20180606102420976-892801232.png
    如果name变量不为空,取变量name的值,否则取值为hello

      -(5)在shell命令终端输入name='/usr/share/doc/apg/php.tar.gz',然后使用echo分别显示表达式①和②的值,观察结果。修改 name 的值,让name='/etc/apt/sources.list.d',再次使用 echo 分别显示表达式①和②的值,观察结果。结合结果,写出表达式的作用。① ${name%%.*} ② ${name%.*}

    1354377-20180606103335319-1495957830.png
    ①name值的末尾如果和‘.’匹配,去掉最多匹配的部分,剩下的即为表达式的值
    ②name的值如果和‘.’匹配,去掉最少匹配的部分,剩下的即为表达式的值

      -(6)在 shell 命令终端输入 name=/usr/bin/X11,然后使用 echo 分别显示表达式①和②的值,观察结果。修改 name 的值,让 name='/etc/apt/sources.list.d',再次使用 echo 分别显示表达式①和②的值,观察结果。结合结果,写出表达式的作用。① ${name#*/}  ② ${name##*/}

    1354377-20180606103702891-1470962001.png
    ①如果name值的开头与‘/’匹配,则去掉匹配最少的部分,剩下的即为表达式的值
    ②如果name值的开头与‘/’匹配,则去掉匹配最多的部分,剩下的即为表达式的值

      -(7)已知某同学提交的博客文章页面地址 address 如下:address='http://www.cnblogs.com/xyz/p/8569001.html'通过字符串匹配,如何得到其博客主页地址:homepage='http://www.cnblogs.com/xyz'写出由变量 address 得到变量 homepage 的 shell 命令实现。

    1354377-20180606103951130-816703430.png

  2. shell 脚本分析
    -(1)使用 vim/gedit 编写 shell 脚本文件 ex1.sh
    1354377-20180606104358854-141719115.png
    在 shell 命令终端分 3 次运行该脚本,观察其运行结果。① 第 1 次运行:. ex1.sh② 第 2 次运行:. ex1.sh best wishes③ 第 3 次运行:. ex1.sh god bless u
    1354377-20180606104522153-1519993799.png
    ① 整个 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
    1354377-20180606105141082-118627748.png
    在命令终端输入. ex2.sh jsj,(实际执行时,请将jsj替换为您电脑中的登录用户名)结合结果及帮助信息
    1354377-20180606105305649-449936276.png
    ① line6 中,who | grep “^$1”的功能?
    判断用户是否存在
    ② line8~10 功能?
    将第一个参数重定向到LimitString中,向其发送Hello hadoop
    -(3)使用 vim/gedit 编写 shell 脚本文件 ex3.sh
    1354377-20180606105641524-1896687379.png
    在命令终端输入. ex3.sh,结合结果及帮助信息,回答下列问题
    1354377-20180606105858430-1640065604.png
    该脚本的功能是?
    该脚本功能是将当前文件夹下的所有.sh格式的文件复制,新文件名为为原文件名加上后缀".BACKUP--日期--时间"。
    -(4)使用 vim/gedit 编写 shell 脚本文件 ex4.sh
    1354377-20180606110100755-1355999542.png
    在 shell 命令终端分 3 次运行该脚本,观察其运行结果。① 第 1 次运行:. ex4.sh② 第 2 次运行:. ex4.sh /etc/apt/sources.list③ 第 3 次运行:. ex4.sh /etc/apt/sources.list ex4.sh
    1354377-20180606110159644-1921374525.png
    1354377-20180606110212201-1815701377.png
    1354377-20180606110226122-679719745.png
    ① line4-10 中函数 NL 的功能?
    line4-10 中函数 NL的作用是将用户输入的值保存在变量x中,然后输出行号和x的值
    ② line14 中,条件测试满足时,脚本执行的功能是?
    条件测试满足时,脚本执行函数NL的功能
    ③ line17-line21,这部分脚本的功能是?
    将参数传递给NL调用,再shift删除这个参数,其余参数左移一位

  3. shell 脚本编写
    -(1)第 4 章 思考题 4.9
    1354377-20180606204428675-1710763967.png
    -(2)第 4 章 思考题 4.11
    1354377-20180606204606453-918897180.png
    -(3)第 4 章 思考题 4.12
    1354377-20180606204620394-379408201.png
    -(4)第 4 章 思考题 4.18
    1354377-20180606204634551-1780937486.png
    -(5)猜数字游戏具体要求如下:① 写一个函数 random0_100 生成 0~100 之间的随机数② 用户从键盘输入竞猜数字,如果猜错了,提示用户所猜数字偏大或偏小,用户继续猜,直至猜对为止。
    1354377-20180606204647216-437254238.png
    1354377-20180606204658525-1465494674.png
    4.总结与体会
    大致了解并掌握了shell程序编写和执行方法,shell特殊字符的用法,shell字符串的处理,shell变量、数组、环境变量、位置变量的基本用法,shell中条件测试和关键字 if, case, while, for, until 的用法,shell函数的使用方法,shell脚本的调试方法,shell命令编程解决实际问题。

转载于:https://www.cnblogs.com/smww/p/9143777.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值