shell
shell 编程中常用的条件判断
三 10th
-b file 若文件存在且是一个块特殊文件,则为真
-c file 若文件存在且是一个字符特殊文件,则为真
-d file 若文件存在且是一个目录,则为真
-e file 若文件存在,则为真
-f file 若文件存在且是一个规则文件,则为真
-g file 若文件存在且设置了SGID位的值,则为真
-h file 若文件存在且为一个符合链接,则为真
-k file 若文件存在且设置了“sticky”位的值
-p file 若文件存在且为一已命名管道,则为真
-r file 若文件存在且可读,则为真
-s file 若文件存在且其大小大于零,则为真
-u file 若文件存在且设置了SUID位,则为真
-w file 若文件存在且可写,则为真
-x file 若文件存在且可执行,则为真
-o file 若文件存在且被有效用户ID所拥有,则为真
-z string 若string长度为0,则为真
-n string 若string长度不为0,则为真
string1 = string2 若两个字符串相等,则为真
string1 != string2 若两个字符串不相等,则为真
int1 -eq int2 若int1等于int2,则为真
int1 -ne int2 若int1不等于int2,则为真
int1 -lt int2 若int1小于int2,则为真
int1 -le int2 若int1小于等于int2,则为真
int1 -gt int2 若int1大于int2,则为真
int1 -ge int2 若int1大于等于int2,则为真
!expr 若expr为假则复合表达式为真。expr可以是任何有效的测试表达式
expr1 -a expr2 若expr1和expr2都为真则整式为真
expr1 -o expr2 若expr1和expr2有一个为真则整式为真
shell编程的基本常识
三 10th
bash的基本配置是由配置文件组成的/etc/profile称之为shell的全局配置文件,另一个是在个人目录下的.bash-profile,还有一个是个人目录下的/etc/bashrc是第二个全局配置文件,在个人目录下也有个配置文件~/.bashrc
echo 输出信息
read 从标准出入读入输入信息
eval 读取参数,执行结果命令
exec 执行命令,但不在当前shell
More >
for what? while与until差在哪?-shell十三问之第13问
二 24th
终于,来到shell 十三问的最后一问了… 长长吐一口气~~~~
最后要介绍的是shell script 设计中常见的”循环”(loop)。
所谓的loop 就是script 中的一段在一定条件下反覆执行的代码。
bash shell 中常用的 loop 有如下三种:
* for
* while
* until
More >
你要if还是case呢?-shell十三问之第12问
二 24th
放了一个愉快的春节假期,人也变得懒懒散散的… 只是,答应了大家的作业,还是要坚持完成就是了~~~
还记得我们在第10 章所介绍的return value 吗?
是的,接下来介绍的内容与之有关,若你的记忆也被假期的欢乐时光所抵消掉的话,
那,建议您还是先回去温习温习再回来…
More >
>与<差在哪?-shell十三问之第11问
二 24th
这次的题目之前我在CU 的shell 版已说明过了:
(原贴连结在论坛改版后已经失效)
这次我就不重写了,将贴子的内容”抄”下来就是了…
————–
11.1
谈到I/O redirection ,不妨先让我们认识一下File Descriptor (FD) 。
More >
&&与||差在哪?-shell十三问之第10问
二 24th
好不容易,进入两位数的章节了… 一路走来,很辛苦吧?也很快乐吧? ^_^
在解答本章题目之前,先让我们了解一个概念:return value!
我们在shell 下跑的每一个command 或function ,在结束的时候都会传回父行程一个值,称为return value 。
在shell command line 中可用$? 这个变量得到最”新”的一个return value ,也就是刚结束的那个行程传回的值。
Return Value(RV) 的取值为0-255 之间,由程式(或script)的作者自行定议:
* 若在script 里,用exit RV 来指定其值,若没指定,在结束时以最后一道命令之RV 为值。
* 若在function 里,则用return RV 来代替exit RV 即可。
More >
$@与$*差在哪?-shell十三问之第9问
二 24th
要说$@ 与$* 之前,需得先从shell script 的positional parameter 谈起…
我们都已经知道变量(variable)是如何定义及替换的,这个不用再多讲了。
但是,我们还需要知道有些变量是shell 内定的,且其名称是我们不能随意修改的,其中就有positional parameter 在内。
More >
$(())与$()还有${}差在哪?-shell十三问之第8问
二 24th
我们上一章介绍了( ) 与{ } 的不同,这次让我们扩展一下,看看更多的变化:$( ) 与${ } 又是啥玩意儿呢?
在bash shell 中,$( ) 与` ` (反引号) 都是用来做命令替换用(command substitution)的。
所谓的命令替换与我们第五章学过的变量替换差不多,都是用来重组命令行:
* 完成引号里的命令行,然后将其结果替换出来,再重组命令行。
More >
()与{}差在哪?-shell十三问之第7问
二 24th
嗯,这次轻松一下,不讲太多… ^_^
先说一下,为何要用 ( ) 或 { } 好了。
许多时候,我们在shell 操作上,需要在一定条件下一次执行多个命令,也就是说,要么不执行,要么就全执行,而不是每次依序的判断是否要执行下一个命令。或是,需要从一些命令执行优先次顺中得到豁免,如算术的2*(3+4) 那样…
这时候,我们就可引入”命令群组”(command group)的概念:将多个命令集中处理。
More >
exec跟source差在哪?-shell十三问之第6问
二 24th
这次先让我们从一个实例来谈起吧:
例中的提问原文如下:
cd /etc/aa/bb/cc可以执行 但是把这条命令写入shell时shell不执行! 这是什么原因呀!
(意思是:运行脚本后并没有移到/etc/aa/bb/cc 目录)
More >