一、作业(练习)内容:
1、描述shell程序的运行原理(可附带必要的图形说明);
什么是shell
shell是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用的是Bash。Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。
对用户而言,不必关心一个命令是建立在shell内部还是一个单独的程序。shell首先检查命令是否是内部命令,若不是再检查是否是一个应用程序(这里的应用程序可以是Linux本身的实用程序,如ls和rm,也可以是购买的商业程序,如xv,或者是自由软件,如emacs)。然后shell在搜索路径里寻找这些应用程序(搜索路径就是一个能找到可执行程序的目录列表)。如果键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。如果能够成功找到命令,该内部命令或应用程序将被分解为系统调用并传给Linux内核。
2、总结shell编程中所涉及到的所有知识点(如:变量、语法、命令状态等等等,要带图的哟);
3、总结课程所讲的所有循环语句、条件判断的使用方法及其相关示例;(if (jpg|png is not exist);echo ”You say a XX“)
if [ $# -lt 5 ]; then
echo "Please enter ‘$0 remote_ip remote_password remote_dest module remote_dir‘"
exit 1
ficompressjs="1"
if [ $# -ge 7 ]; then
$compressjs=$8
fiif [ ! "$JOB_NAME" = ‘景联网‘ ];then
if [ $compressjs == "1" ]; then
for file in `find "$WORKSPACE" -name "*.js" | grep -v ‘.min.js$‘`
do
/usr/local/bin/uglifyjs $file -o $file -m
echo "compressed js file: $file"
done
fi
else
continue
fi#!/bin/bash
#
declare -i sum=0
declare -i i=1while [ $i -le 50 ]; do
let sum+=$i
let i++
done
echo "Sum:$sum."#!/bin/bash
#
declare -i sum=0
declare -i i=1until [ $i -gt 50 ]; do
let sum+=$i
let i++
done
echo "Sum:$sum."
4、写一个脚本:如果某路径不存在,则将其创建为目录;否则显示其存在,并显示内容类型;(不要怀疑,就是这么简单)
#!/bin/bash
#
if [ -z $1 ];then
echo "Usage:$0 <path>"
exit 1
fi
if [ ! -d $1 ];then
mkdir -p $1
else
echo "$1 is exists."
file $1
fi
5、写一个脚本,完成如下功能;判断给定的两个数值,孰大孰小;给定数值的方法:脚本参数,命令交互;(使用read,依然如此简单)
#!/bin/bash
#
read -p "Please input two integer:" -t 6 num1 num2
if [ -z "$num1" ]; then
echo "Please input two integers."
exit 1
fi
if [ -z "$num2" ]; then
echo "Please input two integers."
exit 1
fi
if [ $num1 -gt $num2 ]; then
echo "$num1 > $num2"
elif [ $num1 -lt $num2 ]; then
echo "$num1 < $num2"
else
echo "$num2 = $num1"
fi
6、求100以内所有奇数之和(至少用3种方法。是的这是我们的作业^_^)
#!/bin/bash
#
declare -i sum=0
for i in $(seq 1 2 100);do
sum+=$i
done
echo "Odd sum:$sum."#!/bin/bash
#
declare -i sum=0
declare -i i=1
while [ $i -le 100 ];do
if [ $[$i%2] -eq 1 ];then
let sum+=$i
fi
let i++
done
echo "Odd sum:$sum."#!/bin/bash
#
declare -i sum=0
declare -i i=1
until [ $i -gt 100 ];do
if [ $[$i%2] -eq 1 ];then
let sum+=$i
fi
let i++
done
echo "Odd sum:$sum."
7、写一个脚本实现如下功能:
(1) 传递两个文本文件路径给脚本;
(2) 显示两个文件中空白行数较多的文件及其空白行的个数;
(3) 显示两个文件中总行数较多的文件及其总行数;
#!/bin/bash
#
read -p "Please input two text file path:" file1 file2
if [ ! -f "$file1" ];then
echo "Please input two text file."
exit 1
fi
if [ ! -f "$file2" ];then
echo "Please input two text file."
exit 1
fi
if [ `grep ‘^$‘ $file1 | wc -l` -gt `grep ‘^$‘ $file2 | wc -l` ];then
ls -l $file1
echo `grep ‘^$‘ $file1 | wc -l`
else
ls -l $file2
echo `grep ‘^$‘ $file2 | wc -l`
fi
if [ `cat $file1 | wc -l` -gt `cat $file2 | wc -l` ];then
ls -l $file1
echo `cat $file1 | wc -l`
else
ls -l $file2
echo `cat $file2 | wc -l`
fi
8、写一个脚本
(1) 提示用户输入一个字符串;
(2) 判断:
如果输入的是quit,则退出脚本;
否则,则显示其输入的字符串内容;
#!/bin/bash
#
read -p "Please input a character string:" str1
if [ "$str1" == "quit" ];then
exit
else
echo "$str1"
fi
9、写一个脚本,打印2^n表;n等于一个用户输入的值;(不好意思,我调皮了)
10、写一个脚本,写这么几个函数:函数1、实现给定的两个数值的之和;函数2、取给定两个数值的最大公约数;函数3、取给定两个数值的最小公倍数;关于函数的选定、两个数值都将通过脚本参数进行输入。
二、完成时间:
2015年9月20日之前。
马哥linux+python——2015年9月13日课程作业
原文地址:http://lingguang2008.blog.51cto.com/8221381/1694642