苏州高端网站,网站关键词排名批量查询,黄山旅游最佳时间,摄影师如何做网站一、常用环境变量 1、HOME变量 Linux系统中的每个用户都有一个相关的称作HOME的目录。
2、PATH变量 包含一列用冒号定界的目录的路径名字#xff0c;便于可执行程序的搜索。
3、PS1变量 PS1变量包含了shell提示符#xff0c;$符号
4、LOGNAME变量 包含用户的注册名字…一、常用环境变量 1、HOME变量 Linux系统中的每个用户都有一个相关的称作HOME的目录。
2、PATH变量 包含一列用冒号定界的目录的路径名字便于可执行程序的搜索。
3、PS1变量 PS1变量包含了shell提示符$符号
4、LOGNAME变量 包含用户的注册名字 echo “${LOGNAME}”
5、SHLVL变量 该变量包含你当前工作的shell level
6、SHELL变量 环境变量存储了用户的缺省shell即shell类型
7、env命令 可用来查看所有已移除的环境变量表和它们各自的值
二、常用内部变量 $# ——传送给shell程序的位置参数的数量 $? ——最后命令的完成码或者在shell程序内部执行的shell程序返回值 $0 ——shell程序的名称 $* ——调用shell程序时所传送的全部参数的单字符串 “参数1”“参数2”…形式保存的参数 $n ——第n个参数
三、条件判断命令 test n1 -参数 n2或 –参数 表达式 真返回0假返回1。
参数 -lt 小于 -le小于等于 -gt 大于 -ge 大于等于 -eq 等于 -ne 不等于
·test语句的等价形式[ 1 –lt 4 ] 可用中括号代替test把表达式括起来实现判断 注意表达式与中括号间有空格。
test 1 –lt 4 //判断14 echo $? //结果为0
eg:若输入的参数x 是正数显示 x number is positive
#!/bin/bash
if test $1 -gt 0
then
echo $1 number is positive
fi
四、文件测试的常用代码 -f 存在且是普通文件 -d 存在且是目录 -s 存在且字节数大于0 -r 存在且可读 -w 存在且可写 -x 存在且可执行 如test -d “mydoc” 判断mydoc是否是目录 五、课后作业
编写一个名为iffile程序它执行时判断/bin目录下date文件是否存在
#! /bin/bashfname/bin/dateif (test –f “$fname”) thenecho “exist”fi
说明 在shell程序中经常需要判断所处理的文件是否存在。本程序采用if语句的简单格式测试date文件如果存在则显示相关信息否则退出if语句。
2.编写一个名为greet的问候程序执行时能根据系统当前的时间向用户输出问候信息。设从半夜到中午为早晨中午到下午六点为下午下午六点到半夜为晚上。
#! /bin/sh -hourdate|cut –c 10-11if test “$hour” –ge 0 –a “$hour” –lt 12; thenecho “Good morning!”elif test “$hour” –ge 12 –a “$hour” –le 18; thenecho “Good afternoon!”elseecho “Good evening!”fi
说明 第一个有效语句是将命令执行的结果赋给hour变量所以用反向单引号。 用cut命令从date命令的输出中切割出“小时”信息这里-c 10-11选项表示只切割10到11列。 这个程序使用了if连用格式也可以使用if完整格式的嵌套形式。
3.编写一个名为ifuser的程序它执行时带用户名作为命令行参数判断该用户是否已经在系统中登录并给出相关信息。
#! /bin/sh -
if test $# -ne 1 then
echo Incorrect number of argumentsecho Usage: ifuser username
elseuser$1if who | grep –q $user ; thenecho $1 user is logged on.exit 0elseecho $1 user is not logged on.exit 1fi
fi
说明 1由于who | grep $user不是表达式而是命令组合所以不需要test语句测试如果命令组合执行成功即找到指定的用户名则返回码为0否则为非0。 2在这个程序中使用了grep字符串搜索命令和“|”管道命令 3用grep 命令–q选项来禁止显示搜索到的信息。 4还使用了exit命令以终止shell程序的执行。exit 0表示程序终止后返回0值而exit 1表示程序终止后返回非0的值。
4.编写一个名为menu的程序实现简单的弹出式菜单功能用户能根据显示的菜单项从键盘选择执行对应的命令。
#! /bin/sh -
clear
echo -----------------MENU------------------
echo
echo 1.Find files modified in last 24 hours
echo 2.The free disk space
echo 3.Space consumed by this user
echo 4.Exit
echo
echo -n Select:
read choice
case $choice in
1)find $HOME -mtime -1 -print;;
2)df;;
3)du -s $HOME;;
4)exit;;
*)echo Invalid optionesac
说明 1本程序菜单的第一项是显示/home目录下最近24小时内所有修改过的文件。命令中的-1参数是数字“1”表示一天24小时。第二项是检查磁盘空间。第三项是显示/home目录下文件的大小命令中的-s选项是为了仅显示总计。第四项是退出程序。 2为了使程序美观用echo –n实现输入的选择数字不换行。 3输入的数字不在1-4范围内时显示无效的选项信息。
5.编写一个名为chname的程序将当前目录下所有的.txt文件更名为.doc文件。
#! /bin/sh -
for file in *.txt
doleftnamebasename $file .txtmv $file $leftname.doc
done
说明 1在Linux系统中不支持mv .txt .doc这样的更名命令形式如果需要将文件成批地更名最好编写一个shell脚本文件。 2在for语句的参数列表中使用了“*”通配符。 3在程序中用到basename命令该命令从随后的文件名剥去指定的后缀。
6.编写一个名为chuser的程序执行中每隔5分钟检查指定的用户是否登录系统用户名从命令行输入如果指定的用户已经登录则显示相关信息。 #! /bin/sh –if test $# -ne 1thenecho “Usage: chuser username”elseuser”$1”until who |grep “$user”dosleep 300doneecho “$user has logged on!”fi
说明 1如果没有从命令行输入用户名则测试$# -ne 1为“真”显示用法提示信息。 2程序中until语句的expression循环条件是who|grep “$user”命令执行的返回码如果没有找到指定的用户名返回码为非0为“假”则用sleep命令暂停执行程序5分钟找到后返回码为0为“真”则终止循环并显示该用户已经登录的信息。 3采用重定向到/dev/null空文件的目的是不显示查找到的用户其他信息。