位置: 编程技术 - 正文
Shell常见知识
一、用户登陆进入系统后的系统环境变量
$HOME 使用者自己的目录$PATH 执行命令时所搜寻的目录$TZ 时区$MAILCHECK 每隔多少秒检查是否有新的信件$PS1 在命令列时的提示号$PS2 当命令尚未打完时,Shell 要求再输入时的提示号$MANPATH man 指令的搜寻路径
二、特殊变量
$0 这个程序的执行名字$n 这个程序的第n个参数值,n=1..9$* 这个程序的所有参数$# 这个程序的参数个数$$ 这个程序的PID$! 执行上一个指令的PID$? 执行上一个指令的返回值
三、shell中的变元
* 任意字符串? 一个任意字符[abc] a, b, c三者中之一[a-n] 从a到n的任一字符
四、几个特殊字符表示
b 退回c 打印一行时没有换行符 这个我们经常会用到f 换页r 回车t 制表v 垂直制表\ 反斜线本身
五、判断文件的属性
格式:-操作符 filename-e 文件存在返回1, 否则返回0-r 文件可读返回1,否则返回0-w 文件可写返回1,否则返回0-x 文件可执行返回1,否则返回0-o 文件属于用户本人返回1, 否则返回0-z 文件长度为0返回1, 否则返回0.-f 文件为普通文件返回1, 否则返回0-d 文件为目录文件时返回1, 否则返回0
六、测试字符串
字符串1 = 字符串2 当两个字串相等时为真字符串1 != 字符串2 当两个字串不等时为真-n 字符串 当字符串的长度大于0时为真-z 字符串 当字符串的长度为0时为真字符串 当串字符串为非空时为真
七、测试两个整数关系
数字1 -eq 数字2 两数相等为真数字1 -ne 数字2 两数不等为真数字1 -gt 数字2 数字1大于数字2为真数字1 -ge 数字2 数字1大于等于数字2为真数字1 -lt 数字2 数字1小于数字2为真数字1 -le 数字2 数字1小于等于数字2为真
八、逻辑测试
-a 与-o 或! 非shell中的特殊字符有1、$ 美元符2、 反斜杠3、` 反引号4、" 双引号5、,*,?,[,]
下面我一一举列说明
一、$符号1、echo $? 显示的是上一条指令退出状态2、echo "$?" 效果同上3、echo '$?' 显示的是$?4、echo $? 显示的是$?5、echo "$?" 显示的是$?大家可能已经看出 $符号在双引号中具有特殊意义 双引号对$符号不起作用而单引号可以将特殊字符的的特殊意义屏蔽掉,使其能显示为字符本身,反斜杠也可以将特殊字符的特殊含义屏蔽掉,使特殊字符失去特殊含义。
二、 反斜杠
反斜杠的作用是将特殊符号字符的特殊含义屏蔽掉,使其还是原字符A=echo $A 显示为$A 如果不加将显示为echo ` 显示为`echo " 显示为双引号echo \ 显示为
三、` 反引号
反引号的功能是命令替换,将反引号中的字符串做为命令来执行,我们在用shell编程时经常用的到 将系统命令的执行结果赋给一个变量A=`date`echo $A 显示的不是date而是当时的时间串比如有一文件A的内容如下 ABCDEFGabcdefgB=`cat A|grep ` #检索文件A中含有字符串的行echo $B 将显示为echo "$B" 将显示为什么?echo "$B" 将显示为什么?读者自己试试
四、"双引号
在系统中有些特殊字符,为避免引用这些特殊字符 往往用双引号或单引号将这些特殊字符引起来,使其不具有特殊含义。但有一部分特殊字符在引号中还是具有特殊含义,用双引号引起来是不起作用的。本文中所列的前四个特殊字符在双引号中还是特殊字符。为了使其不具有特殊含义一是用单引号引进来二是用反斜线使其失去作用。比如我们想原样输出这些特殊字符echo """echo "$"echo ""echo "`"以上不是你所期望的结果,因为双引号对它们不起作用,你只能这样才能输出这些特殊字符的原形echo '"'echo '$'echo ''echo '`'或echo """echo "$"echo "\"echo "`"将分别显示为 " $ `
五、其它特殊字符
大家注意到,除了前四个特殊字符外,我将其它的特殊字符都放在一块,这是因为前四个特殊字符在双引号中还是具有特殊含义,所以单独拿出来讲,除此以外的特殊字符如果你要输出这些特殊字符的原形,你就可以用双引号或单引号引起来使其失去特殊含义。,*,?,[,]对shell有特殊含义 但你可以用双引号引起来输入这些原形一、if条件语句 格式:if 条件表达式then #当条件为真时执行以下语句命令列表else #为假时执行以下语句命令列表fiif 语句也可以嵌套使用if条件表达式1thenif 条件表达式2then命令列表elseif 条件表达式3then命令列表else命令列表fifielse命令列表fi你可以进行多层嵌套 一个if语句一定要跟一个fi 表示该层条件结束否则会造成语法错误结合前面讲的 举例如下:这里先讲一个条件语句中用到的命令test 表示测试test后面的条件是否为真if test -f "$1"thenlpr $1elseif test -d "$1"thencd $1lpr $1elseecho "$1不是文件或目录"fifi以上的例子还可以改成如下所示if test -f "$1"thenlpr $1elif test -d "$1" #elif 同else ifthen(cd$1;lpr $1)elseecho "$1不是文件或目录"fi 以上的例子不知您是否看懂是什么意思吗?假如我们现在将这个例子保存为prfilechmod +x prfile执行刚才的程序./prfile aaa这个例子是检查你的输入的参数是否是一个文件 如果是就打印 如果是一个目录 先转目录再打印 如果即不是文件也不是目录给出提示二、多重条件测试语句case格式:case 字串 in模式) 命令列表;;模式) 命令列表;;....esac多重条件语句是以case开始以esac结束 中间可以有多个条件列表 功能是测试字串和和里面的模式有没有匹配的,有就执行里面的命令列表 模式也可以是*号 表示任意字串,每个模式里面的最后要心;;双引号结束,否则会发生语法错误。现举例如下:case $1 in*.c)cc $1*.txt)lpr $1*)echo "未知的类型"esac假如将以上内容保存在文件abc中chmod +x abc执行 ./abc a.c将会对文件a.c进行编译执行 ./abc readme.txt 将会把文件通过打印机假如我将以上内容改一下,你是否会知道它的执行结果?case $1 in*)cc $1*.txt)lpr $1*.c)echo"未知的类型"esac一. while 循环while 命令格式while 条件表do命令表done执行过程Shell首先执行条件表,如果条件表的最后一条语句的退出状态为零,则执行盾环体内的命令表,执行完后,再检查条件表,如果退出状态为零将继续执行,如此循环往复直到条件表的最后一条语句的退出状态非零.退出状态为零就是条件为真True.举例说明 假如shell文件的内容如下:Sum=0i=0while true #true是系统的关键词 表示真doi=`expr $i + 1`Sum=`expr $Sum + $i`if [ $i = "" ]thenbreak;fidoneecho $i $Sum最后这个程序显示的是 这个程序的运算就是将1到加起来下面将这个程序再改动一下Sum=0i=0while [ $i != "" ]doi=`expr $i + 1`Sum=`expr $Sum + $i`doneecho $i $Sum改动后的程序运算结果和上面是一样 但程序比上面的要简练在这个循环中还可以以until做为测试条件它正好与while测试的条件相反,也就是当条件为假时将继续执行循环体内的语句,否则就退出循环体,下面还用这个例子.Sum=0i=0until [ $i = "" ]doi=`expr $i + 1`Sum=`expr $Sum + $i`doneecho $i $Sum当i不等于时循环 就是当条件为假时循环,否则就退出,而第一个例子是当i不等于时循环,也就是测试条件为真时循环.二.for 循环命令格式:for 变量 in 名字列表do命令列表done这里的名字列表是一个由空格分隔的字符串列表,shell在执行for循环时每次依次从名字表中取出一个字符串赋给循环变量作为变量的值.在写for语句时,也可以省略in 名字列表部分,这表示用当前的位置参数来代替这时的名字列表.面举个例子,比如在你的电脑中有两个目录,一个是aa,一个是bb在这两个目录中有5个相同的文件,但其中一个目录中的一个或多个文件刚刚修改过,现在我忘记刚才改的是那几个文件了,那么我靠已知的序码查找。程序如下:for File in a1 a2 a3 a4 a5dodiff aa/$File bb/$Filedone下面再举一个不带名字列表的例子forFiledoecho $Filwdone文件内容保存在a.sh中 并可执行我们在执行这个shell程序时命令行如下:a.sh a1 a2 a3 a4 a5执行结果如下:a1a2a3a4a5大家从这个例子中可以看到命令行的参数被逐一读入一次三.循环控制语句break命令不执行当前循环体内break下面的语句从当前循环退出.continue命令是程序在本循体内忽略下面的语句,从循环头开始执行.
推荐整理分享Shell常见知识 方便想学习linux shell的彭玉(shell常用命令及示例),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:shell常用,shell实例讲解,shell用法,shell详解,shell常用语句,shell常用命令及示例,shell基础知识,shell常用命令及示例,内容如对您有帮助,希望把文章链接给更多的朋友!
sed模式空间和暂存空间的区别 sed编辑器逐行处理文件,并将输出结果打印到屏幕上。sed命令将当前处理的行读入模式空间(patternspace)进行处理,sed在该行上执行完所有命令后就将
对Shell 脚本加密的方法 用shell脚本对系统进行自动化维护,简单,便捷而且可移植性好.但shell脚本是可读写的,很有可能会泄露敏感信息,如用户名,密码,路径,IP等.同样,在shell脚本
sed初学者实用说明 例如,在多个系统、应用程序安装之后,我们往往需要对很多配置文件进行修改,用vi编辑器意味着耗费时间、重复劳动,而sed就可将我们从繁重的重
标签: shell常用命令及示例
本文链接地址:https://www.jiuchutong.com/biancheng/378359.html 转载请保留说明!友情链接: 武汉网站建设