shell编程2

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

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

 

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

(提示:注意引号的选择,同时确保字符串中多个空格、$、*等完全原样显示)

 

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

 

第一行定义一个一维数组likes,里面有三个元素cosmos,galaxy,moon

第二行将数组likes的第一个元素变成mars

 

${likes[*]}:显示数组like中所有非空元素

 

${likes[@]}:显示数组like中所有非空元素

 

${#likes[*]}:显示数组like中元素个数

 

${#likes[@]}:显示数组like中元素个数

 

${#likes}:显示数组like中下表为0的元素的长度

 

${#likes[0]}:显示数组like中下表为0的元素的长度

 

(4) shell 命令终端输入 name=Phoenix,然后使用 echo 显示表达式①,观察结果;然后输入命令 unset name,再输入表达式①观察结果。

变量name的值为Phonenix,不为空,所以echo显示的为Phonenix

 

Unset用于删除已定义的变量,删除后name为空,所以echo显示的为hello

(5) shell 命令终端输入 name='/usr/share/doc/apg/php.tar.gz',然后使用 echo 分别显示表达式①和②的值,观察结果。

 

%%%后面的内容与name的值的末尾匹配,name的值去掉匹配到的结果就是表达式的值

%是最少匹配,%%表示最多匹配

修改 name 的值,让 name='/etc/apt/sources.list.d',再次使用 echo 分别显示表达式①和②的值,观察结果。

同上

 

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

 

###后面的内容与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,其内容如下:(教材 P145 思考题 4.8)

 

shell 命令终端分次运行该脚本,观察其运行结果。

 

执行. ex1.sh时,没带参数,不符合while中的条件,所以什么都不执行不输出

执行. ex1.sh best wishes时,有两个参数,$count=2,满足while中的条件,$count大于等于0cmd的值为wishescount-1,依旧满足条件,cmd的值为wishes bestcount-1不满足条件,退出运行cmd中的命令

执行. ex1.sh god bless u,原理同上

整个脚本作用是倒序输出参数。

(2)使用 vim/gedit 编写 shell 脚本文件 ex2.sh,其内容如下:(教材 P145 4.10)

在命令终端输入. ex2.sh jsj,(实际执行时,请将 jsj 替换为您电脑中的登录用户名)

 

第六行判断用户名hadoop是否在系统中

八到十行将第一个参数重定向到LimitString中,向其发送Hello hadoop

(3)使用 vim/gedit 编写 shell 脚本文件 ex3.sh,其内容如下:

 

在命令终端输入. ex3.sh

 

该脚本功能是将当前文件夹下所有.sh格式文件复制一遍,新文件名在原文件名基础上加上后缀”.BACKUP--当前时间

(4)使用 vim/gedit 编写 shell 脚本文件 ex4.sh,其内容如下:

shell 命令终端分次运行该脚本,观察其运行结果。

执行. ex4.sh时,参数为空,所以脚本在等待参数输入,输入后加上行号一起输出

执行. ex4.sh /etc/apt/sources.list时,将/etc/apt/sources.list中的内容作为参数连行号一起输出

执行. ex4.sh /etc/apt/sources.list ex4.sh时,先后将/etc/apt/sources.listex4.sh中的内容作为参数连行号一起输出

3. shell 脚本编写

1.编写一个shell脚本,它把第二个位置参数以及其后的各个参数指定的文件复制到第一个位置参数指定的目录中。

 

2.打印给定目录下的某些文件,由第一个参数指出文件所在的目录,其余参数是要打印的文件名。

 

3.利用for循环将当前目录下的.c文件移到指定的目录下,并按文件大小排序,显示移动后指定目录的内容。

 

 4.设计一个程序cuts,它由标准输入读取数据,获取由第一个参数n和第二个参数m所限定范围的数据,n和m都是整数,即从输入的字符串中抽取第n个字符至第m个字符之间的所有字符(包括这两个字符)。例如:

$cuts 11 14

this is a test of cuts program (输入)

test  (结果)

 

5)猜数字游戏
具体要求如下:
① 写一个函数 random0_100 生成 0~100 之间的随机数
② 用户从键盘输入竞猜数字,如果猜错了,提示用户所猜数字偏大或偏小,用户继续猜,直至猜对为止。

 

 

4.总结与体会

本次实验,我觉得自己shell编程能力不够,做练习时需要借助课本和资料,因此,还需要进一步练习和理解。

 

转载于:https://www.cnblogs.com/linux-homework-zjy/p/9116994.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: cuts程序一个用于剪切文本文件中指定列的工具。它可以根据用户指定的分隔符将文本文件中的每一行分割成多个字段,并输出指定的列。该程序可以用于处理各种文本文件,如日志文件、配置文件等。cuts程序设计需要考虑到用户友好性、效率和可靠性等因素。 ### 回答2: cuts是一个在Linux操作系统上设计程序。它的主要功能是从文本文件中根据给定的标记和规则进行剪切和筛选。 首先,cuts可以接收一个文本文件作为输入,并根据指定的规则从该文件中提取所需的内容。用户可以使用-c选项指定要提取的列数,也可以使用-d选项来指定字段之间的分隔符。 例如,假设有一个名为data.txt的文本文件包含了如下内容: ``` Name,Age,City John,25,New York Emily,30,Los Angeles ``` 通过运行“cuts -c1,3 -d, data.txt”,cuts程序将从文件中提取出第1列和第3列,并使用逗号作为字段分隔符,输出如下结果: ``` Name,City John,New York Emily,Los Angeles ``` 此外,cuts还提供了其他的选项来满足不同的需求。例如,用户可以使用-f选项指定要提取的字段,而不是列。此外,还可以使用-r选项来指定提取字段的范围。 cuts程序不仅可以提取文本文件中的内容,还可以根据用户提供的规则对内容进行筛选。用户可以使用-m选项,同时指定要提取的内容和匹配模式。cuts程序将只提取满足给定模式的行,并将结果输出。 总而言之,cuts是一个功能强大且灵活的程序,适用于Linux操作系统上对文本文件进行剪切和筛选操作的场景。它可以根据用户的需求提取和筛选所需的内容,并提供多种选项和规则来满足不同的要求。 ### 回答3: Linux上的程序cuts是一个用于剪切文本文件的程序。该程序设计目的是为了能够从一个文本文件中提取出指定列的内容,并将提取的内容输出到一个新的文件中。 程序cuts的基本设计思路是通过读取文本文件的每一行,按照指定的分隔符将每一行拆分成多个字段。然后根据用户指定的列号,将对应的字段保存到一个新的文件中。 程序cuts的具体用法可以通过命令行参数进行设置。用户可以通过指定的命令行选项来设置分隔符、选择列号,以及输入和输出文件的路径。 例如,用户可以使用命令`cuts -d ',' -f 1,3 input.txt output.txt`来将一个以逗号分隔的文本文件input.txt中的第1列和第3列的内容提取出来,并保存到output.txt文件中。 程序cuts的设计中还应考虑到错误处理和边界情况。例如,如果用户指定的分隔符或列号无效,程序应该提供适当的错误提示。另外,程序还应该能够处理大型文本文件,确保在处理过程中不会超出系统的内存限制。 总之,程序cuts的设计目标是实现一个灵活而高效的文本文件剪切工具,能够方便地提取出指定列的内容,并保存到一个新的文件中。通过合理的命令行参数设置,用户可以根据自己的需求来灵活地使用该程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值