2015年9月13日-9月15日课程作业(shell)脚本实例
2015-09-21 10:06
781 查看
实例1
写一个脚本:如果某路径不存在,则将其创建为目录;否则显示其存在,并显示内容类型;(不要怀疑,就是这么简单)
方法1
![](http://s3.51cto.com/wyfs02/M01/73/7B/wKiom1X_YiWxiXCgAAFHByB6c8M367.jpg)
实例2
写一个脚本,完成如下功能;判断给定的两个数值,孰大孰小;给定数值的方法:脚本参数,命令交互;(使用read,依然如此简单)
方法1
![](http://s3.51cto.com/wyfs02/M00/73/7B/wKiom1X_ZefiCrQgAAEBNUmdJcQ199.jpg)
7、求100以内所有奇数之和(至少用3种方法。是的这是我们的作业^_^)
方法1
![](http://s3.51cto.com/wyfs02/M00/73/7A/wKioL1X_duXxXn6FAAEPIkFEX5A344.jpg)
实例3
写一个脚本实现如下功能:
(1) 传递两个文本文件路径给脚本;
(2) 显示两个文件中空白行数较多的文件及其空白行的个数;
(3) 显示两个文件中总行数较多的文件及其总行数;
![](http://s3.51cto.com/wyfs02/M02/73/80/wKioL1X_x_Lhgnr2AANfrOqT-7I558.jpg)
实例4
(1) 提示用户输入一个字符串;
(2) 判断:
如果输入的是quit,则退出脚本;
否则,则显示其输入的字符串内容;
![](http://s3.51cto.com/wyfs02/M02/73/81/wKioL1X_z3qzToM1AAESRVzH9dI948.jpg)
实例5
写一个脚本,打印2^n表;n等于一个用户输入的值;(不好意思,我调皮了)
![](http://s3.51cto.com/wyfs02/M00/73/8C/wKiom1YA6P_CYnNJAADtLSNInO8125.jpg)
11、写一个脚本,写这么几个函数:函数1、实现给定的两个数值的之和;函数2、取给定两个数值的最大公约数;函数3、取给定两个数值的最小公倍数;关于函数的选定、两个数值的大小都将通过交互式输入来提供。
![](http://s3.51cto.com/wyfs02/M02/73/91/wKioL1YBM9_SbLK_AAIRfrvsq8w237.jpg)
写一个脚本:如果某路径不存在,则将其创建为目录;否则显示其存在,并显示内容类型;(不要怀疑,就是这么简单)
方法1
[root@localhost 20150921]# file=/tmp/test/ddr [root@localhost 20150921]# ! [ -e $file ] && mkdir -p $file || echo $file exists. && echo "file type is `file $file`" file type is /tmp/test/ddr: directory [root@localhost 20150921]# ! [ -e $file ] && mkdir -p $file || echo $file exists. && echo "file type is `file $file`" /tmp/test/ddr exists. file type is /tmp/test/ddr: directory [root@localhost 20150921]#方法2
#!/bin/bash # #file=$1 #! [ -e $file ] && mkdir -p $file || echo $file exists. && echo "file type is `file $file`" file=$1 if ! [ -e $file ]; then mkdir -p $file echo "create file $file" else echo "$file exists." echo "file type is `file $file`" fi执行结果:
![](http://s3.51cto.com/wyfs02/M01/73/7B/wKiom1X_YiWxiXCgAAFHByB6c8M367.jpg)
实例2
写一个脚本,完成如下功能;判断给定的两个数值,孰大孰小;给定数值的方法:脚本参数,命令交互;(使用read,依然如此简单)
方法1
[root@localhost 20150921]# read -p "Plz enter two integer:" num1 num2 Plz enter two integer:5 [root@localhost 20150921]# read -p "Plz enter two integer:" num1 num2 Plz enter two integer:3 5 [root@localhost 20150921]# [ $num1 -gt $num2 ] && echo "$num1 -gt $num2: num1 is greater than b" || echo "$num1 -gt $num2: num1 is not greater than b" 3 -gt 5: num1 is not greater than b [root@localhost 20150921]#方法2
#!/bin/bash # read -p "Plz enter two integer:" num1 num2 if [ $num1 -gt $num2 ]; then echo "$num1 -gt $num2: num1 is greater than b" else echo "$num1 -gt $num2: num1 is not greater than b" fi执行结果:
![](http://s3.51cto.com/wyfs02/M00/73/7B/wKiom1X_ZefiCrQgAAEBNUmdJcQ199.jpg)
7、求100以内所有奇数之和(至少用3种方法。是的这是我们的作业^_^)
方法1
#1/bin/bash declare -i sum=0 for i in $(seq 1 2 100);do sum=$[$sum+i] done echo $sum方法2
#!/bin/bash # declare -i sum=0 for i in {1..100};do if [ $[$i%2] -eq 1 ];then sum=$[$sum+$i] fi done echo $sum方法3
#!/bin/bash # declare -i sum=0 declare -i i=0 while [ $i -le 100 ]; do if [ $[$i%2] -eq 1 ];then let sum+=$i fi let i++ done echo "Sum:$sum."运行结果:
![](http://s3.51cto.com/wyfs02/M00/73/7A/wKioL1X_duXxXn6FAAEPIkFEX5A344.jpg)
实例3
写一个脚本实现如下功能:
(1) 传递两个文本文件路径给脚本;
(2) 显示两个文件中空白行数较多的文件及其空白行的个数;
(3) 显示两个文件中总行数较多的文件及其总行数;
#!/bin/bash # for i in $1 $2;do echo $i awk '/^[ ]/ {++S[$NF]} END{for(a in S) print a, S[a]}' $i awk 'BEGIN{c=0}/^[ ]/{c++}END{printf "space=%d\ncount=%d\n",c,NR}' $i done执行结果:
![](http://s3.51cto.com/wyfs02/M02/73/80/wKioL1X_x_Lhgnr2AANfrOqT-7I558.jpg)
实例4
(1) 提示用户输入一个字符串;
(2) 判断:
如果输入的是quit,则退出脚本;
否则,则显示其输入的字符串内容;
#!/bin/bash # echo "enter a character:" while read char do if [ $char = 'quit' ]; then break; else echo $char echo "enter a character:" fi done执行结果:
![](http://s3.51cto.com/wyfs02/M02/73/81/wKioL1X_z3qzToM1AAESRVzH9dI948.jpg)
实例5
写一个脚本,打印2^n表;n等于一个用户输入的值;(不好意思,我调皮了)
#!/bin/bash # declare -i sum=2 read -p "Plz enter one integer: " num1 for ((j=1;j<=$num1;j++));do echo -n -e "${sum}^$j=$[$sum**$j]\n" done执行结果:
![](http://s3.51cto.com/wyfs02/M00/73/8C/wKiom1YA6P_CYnNJAADtLSNInO8125.jpg)
11、写一个脚本,写这么几个函数:函数1、实现给定的两个数值的之和;函数2、取给定两个数值的最大公约数;函数3、取给定两个数值的最小公倍数;关于函数的选定、两个数值的大小都将通过交互式输入来提供。
#!/bin/bash # sum(){ # val=$[$num1+$num2] val=`expr $num1 + $num2` echo "Total value : $val" } gcd(){ if [ $num1 -eq $num2 ]; then echo "max is:${num1},mini is:${num1}." exit fi if [ $num1 -gt $num2 ]; then GREAT=$num1 SMALL=$num2 else GREAT=$num2 SMALL=$num1 fi declare -i GCD_RESULT=1 declare -i greattmp=1 declare -i smalltmp=1 declare -i i=1 while [ $i -le $SMALL ]; do greattmp=`expr $GREAT % $i` smalltmp=`expr $SMALL % $i` [ ${greattmp} -eq 0 ] && [ ${smalltmp} -eq 0 ] && GCD_RESULT=${i} i=`expr ${i} + 1` done #LCM_RESULT=`expr $SMALL / $GCD_RESULT` #LCM_RESULT=`expr $LCM_RESULT \* $GREAT` echo "max is:${GCD_RESULT}" } lcm(){ if [ $num1 -eq $num2 ]; then echo "max is:${num1},mini is:${num1}." exit fi if [ $num1 -gt $num2 ]; then GREAT=$num1 SMALL=$num2 else GREAT=$num2 SMALL=$num1 fi declare -i LCM_RESULT=1 declare -i greattmp=1 declare -i smalltmp=1 declare -i GCD_RESULT=1 declare -i i=1 while [ $i -le $SMALL ]; do greattmp=`expr $GREAT % $i` smalltmp=`expr $SMALL % $i` [ ${greattmp} -eq 0 ] && [ ${smalltmp} -eq 0 ] && GCD_RESULT=${i} i=`expr ${i} + 1` done LCM_RESULT=`expr $SMALL / $GCD_RESULT` LCM_RESULT=`expr $LCM_RESULT \* $GREAT` echo "mini is:${LCM_RESULT}." } prog=$(basename $0) read -p "Plz enter two integer: " num1 num2 read -p "Plz enter sum | gcd | lcm : " num case $num in sum) sum ;; gcd) gcd ;; lcm) lcm ;; *) echo "Usage:$prog sum|gcd|lcm" exit 1 esac执行结果:
![](http://s3.51cto.com/wyfs02/M02/73/91/wKioL1YBM9_SbLK_AAIRfrvsq8w237.jpg)
相关文章推荐
- 未知攻焉知防 — Webshell变形技术集锦-20150917
- 显示shell结果的头部几行
- 对shell命令结果进行行数统计的方法
- Linux之linux bash scripts
- Bash中的特殊变量和位置参量
- Bash的数组
- 一个shell字符串特殊字符处理的小函数
- Bash扩展顺序
- Linux shell 变量 数学 运算
- bash的循环语句和列表
- bash的条件判断
- 9月13日,bash总结
- Linux 于 shell 变数 $#,$@,$0,$1,$2 含义解释:
- shell总结
- shell快捷键
- How to install and configure Azure PowerShell
- Shell编程入门(再版)(在)
- Shell 进制转换
- Linux Shell之sort命令(转)
- HBase Shell