SHELL 的一些简单的用法

来源:互联网 发布:ae软件图标 编辑:程序博客网 时间:2024/06/03 18:08

SHELL 的定义:如果你有一系列经常使用的Linux命令,你可以把他们存储在一个文件中。Shell可以读取这个文件并执行其中的命令。这样的文件被称为脚本文件。
SHELL 的结构:shell 类型
文件格式:abc.sh
函数
主过程

一般模板

#!/bin/bash                           shell类型#a simple shell script example#a functionsayhello()                函数{    echo "Enter Your name:"    read name          读取来自键盘输入的变量    echo "Hello $name"}echo "programme starts here..."  主过程sayhelloecho "programme ends."

特殊符号:
1、注释符#
除了#!/bin/bash里的#特殊
2、美元符 使a表示变量a的值。变量字符长度超过1个时,用{}括起来
3、、单引号
被引起的字符全部做普通字符,即全部原样
echo ‘my $SHELL’

4、双引号
引号内的内容,除$、转义符\、倒引号这三个保留特殊功能,其他字符均做普通字符。
5、倒引号(数字1键旁边的那个键)
引号内的字符串当做shell命令行解释执行,得到的结果取代整个倒引号括起来的部分。
pwd`即pwd命令的执行结果
$LOGNAME 系统变量

#!/bin/bashecho "abcdefg........"syshellosyshello(){    echo "enter function....."    ls -l    echo "over  function....."}echo "start......."sy```shelloecho "exit......"

常用环境变量
1、HOME变量
Linux系统中的每个用户都有一个相关的称作HOME的目录。
2、PATH序的搜索
包含一列用冒号定界的目录的路径名字,便于可执行程序的搜索。
部分内部变量是:
$# ——传送给shell程序的位置参数的数量
$?——最后命令的完成码或者在shell程序内部执行的shell程序(返回值)
$0 ——shell程序的名称
$*——调用shell程序时所传送的全部参数的单字符串, “参数1”“参数2”…形式保存的参数
$n———-第n个参数
条件判断命令:
test n1 -参数 n2(或 –参数 表达式)真返回0,假返回1。
参数:
-lt 小于
-le小于等于
-gt 大于
-ge 大于等于
-eq 等于
-ne 不等于

#!/bin/bashif [ $# -ne 1 ]then    echo "Usage:$0 filename"    exit 1fi<< Aif test -f $1then    echo "file exist!"else    touch $1    echo "create file:$1"fiAtest -f $1 && echo "file exist!"test -f $1 || touch $1

shell运算符和C语言基本类似,也有分支、循环流程控制。
简单举例
后面例子涉及的命令:
seq命令:产生数字序列
比如 seq 100 400
expr命令:对表达式求值
[]直接求值命令:对被括起来的表达式求值
循环语句:

#!/bin/bash<< Afor i in asn 12 dd 56464sfs 646g do    echo $idoneA<< Bs=0for i in 1 2 3 4 5 6 7 8 9 10do   s=$((s+i))doneecho $sBs=0for i in `seq 1 10`do   s=$((s+i))doneecho $s
#!/bin/bashs=0i=0while [ $i -le 100 ]do    s=$((s+i))    i=$((i+1))doneecho $s

**文件测试
-f 存在且是普通文件
-d 存在且是目录
-s 存在且字节数大于0
-r 存在且可读
-w 存在且可写
-x 存在且可执行
如:test -d “mydoc”
判断mydoc是否是目录
字符串测试
test s 字符串s非空
test s1=s2 字符串s1等于s2
test s1!=s2 字符串s1不等于s2
test -z s 字符串长=0,即为空串
test -n s 字符串长>0
=: 等于则为真
!=:不相等则为真
-z字符串:字符串长度为零则为真
-n字符串:字符串长度不为零则为真**n字符串:字符串长度不为零则为真
几个 SHELL 的应用
1,编写一个名为iffile程序,它执行时判断/bin目录下date文件是否存在?

filename=/bin/dateif    (test -f "$filename")then    echo "exist"fi  

2.编写一个名为menu的程序,实现简单的弹出式菜单功能,用户能根据显示的菜单项从键盘选择执行对应的命令。

#!/bin/bashclearecho " ---------MENU---------"echoecho "1.Find files modified in last 24 hours"echo "2.The free disk space"echo "3.Space consumed by this user"echo "4.Exit"echoecho -n " Select:"read choicecase $choice in    1)find $HOME -mtime -1 -print;;    2)df;;    3)du -s $HOME;;    4)exit;;    *)echo "Invalid option"esac

3.编写一个名为greet的问候程序,执行时能根据系统当前的时间向用户输出问候信息。设从半夜到中午为早晨,中午到下午六点为下午,下午六点到半夜为晚上。

#! /bin/bashhour=`date | cut -c 10-11`if    test "$hour" -ge 0 "$hour" -lt 12;then    echo "Good morning!"elif     test "$hour" -ge 12 -a "$hour" -le 18;then    echo "Good afternoon!"else    echo "Good evening!"fi
原创粉丝点击