shell脚本部分命令用法
2014-03-18 17:51
381 查看
1、 if用法:
格式:
if [ 条件 ];thenCommand
Command
.......
else
Command
Command
......
fi
条件表达式:
文件表达式if [ -f file ] 如果文件存在
if [ -d ... ] 如果目录存在
if [ -s file ] 如果文件存在且非空
if [ -r file ] 如果文件存在且可读
if [ -w file ] 如果文件存在且可写
if [ -x file ] 如果文件存在且可执行
整数变量表达式
if [ int1 -eq int2 ] 如果int1等于int2
if [ int1 -ne int2 ] 如果不等于
if [ int1 -ge int2 ] 如果>=
if [ int1 -gt int2 ] 如果>
if [ int1 -le int2 ] 如果<=
if [ int1 -lt int2 ] 如果<
字符串变量表达式
If [ $a = $b ] 如果string1等于string2
字符串允许使用赋值号做等号
if [ $string1 != $string2 ] 如果string1不等于string2
if [ -n $string ] 如果string 非空(非0),返回0(true)
if [ -z $string ] 如果string 为空
if [ $sting ] 如果string 非空,返回0 (和-n类似)
shell 编程中使用到得if语句内判断参数
–b 当file存在并且是块文件时返回真
-c 当file存在并且是字符文件时返回真
-d 当pathname存在并且是一个目录时返回真
-e 当pathname指定的文件或目录存在时返回真
-f 当file存在并且是正规文件时返回真
-g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
-h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
-k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
-p 当file存在并且是命令管道时返回为真
-r 当由pathname指定的文件或目录存在并且可读时返回为真
-s 当file存在文件大小大于0时返回真
-u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
-w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
-o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。
2、exec 作用(内置命令):
shell的内建命令exec将并不启动新的shell,而是用要被执行命令替换当前的shell进程,并且将老进程的环境清理掉,而且exec命令后的其它命令将不再执行。因此,如果你在一个shell里面,执行exec ls那么,当列出了当前目录后,这个shell就自己退出了,因为这个shell进程已被替换为仅仅执行ls命令的一个进程,执行结束自然也
就退出了。为了避免这个影响我们的使用,一般将exec命令放到一个shell脚本里面,用主脚本调用这个脚本,调用点处可以用bash
a.sh,(a.sh就是存放该命令的脚本),这样会
为a.sh建立一个sub shell去执行,当执行到exec后,该子脚本进程就被替换成了相应的exec的命令。
3、关于循环命令:
(1)until 命令:
until do done:就是说当条件成立时,就停止循环,否则就一直循环下去。与它相反的“while do done ”当条件成立时,就进行循环,否则就停止循环。
until do done 语法:
until [ 条件 ]do
程序段
done
(2)for 命令
“for in do done ”当条件成立时,就进行循环,否则就停止循环 for in do done 语法
for arg in "$@"do
echo $arg
done
(3)while 命令
“while do done ”当条件成立时,就进行循环,否则就停止循环。 while do done 语法
while command1do
command
command
……
done
4、Shift的用法:
位置参数可以用shift 命令左移。
比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,$0不移动。不带参数的shift命令相当于shift 1。
Shift 命令还有另外一个重要用途, Bash 定义了9个位置变量,从 $1 到 $9,这并不意味着用户在命令行只能使用9个参数,借助 shift 命令可以访问多于9个的参数。
Shift 命令一次移动参数的个数由其所带的参数指定。例如当 shell 程序处理完前九个命令行参数后,可以使用 shift 9 命令把 $10 移到 $1。
eg:
# t_shift.sh 测试shift命令
#!/bin/bash
until [ $# -eq 0 ]
do
echo "第一个参数为:$1,此时共有参数个数: $#"
shift 2
done
$ ./shift.sh 1 2 3 4 5 6
结果:
第一个参数为:1,此时共有参数个数:6
第一个参数为:3,此时共有参数个数:4
第一个参数为:5,此时共有参数个数:2
注: $#表示提供给脚本的参数数量(即 表示此脚本当前有几个变量);若有4个变量,执行 shift 2 后,前2个变量 $1, $2丢弃, $3 --> $1、 $4 --> $2
$* 表示所有这些参数都被双引号引住。若一个脚本接收两个参数,$*等于$1$2
$@ 表示所有这些参数都分别被双引号引住,若一个脚本接收到两个参数,$@等价于$1$2
举例说: 脚本名称叫test.sh 入参三个: 1 2 3 运行test.sh 1 2 3后 $* 为 "1 2 3"(一起被引号包住) $@ 为 "1" "2" "3"(分别被包住) $# 为 3(参数数量)
5、exit
在脚本里面有exit 0 ,exti 1则当运行到这个地方的时候就跳出脚本,不在运行下面的脚本。通常,exit 0 表示成功, exit 1表示失败
相关文章推荐
- shell脚本学习笔记之sed命令用法
- shell脚本介绍shell脚本结构和执行date命令用法shell脚本中的变量
- 20.1 shell脚本介绍 20.2 shell脚本结构和执行 20.3 date命令用法 20.4 shell脚本中的变量
- linux学习第六十三篇:Shell脚本介绍,Shell脚本结构和执行,date命令用法,Shell脚本中的变量
- 十六周二次课 2018.02.05 shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变 bbc6 量
- 【shell编程】shell脚本介绍、shell脚本结构和执行、date命令用法和shell脚本中的变量
- 高级shell脚本编程之重定向、环境变量、shell函数、echo命令用法
- shell脚本介绍 Shell脚本结构和执行 date命令用法 Shell脚本中的变量
- shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量
- 《初入linux》--第十四部分-shell 脚本命令
- centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课
- 20.1 shell脚本介绍 20.2 shell脚本结构和执行 20.3 date命令用法 20.4 shell脚本中的变量
- shell脚本介绍,shell脚本结构和执行方式,date命令的用法,shell脚本中的变量简介
- shell脚本结构、date命令、变量 shell脚本中的逻辑判断 文件目录属性判断 if特殊用法 case判断
- shell脚本介绍shell脚本结构和执行date命令用法shell脚本中的变量
- Shell脚本(脚本结构和执行方法,date命令用法,脚本中的变量)
- shell脚本介绍、脚本结构和执行、date命令用法、脚本中的变量
- Shell脚本的echo命令用法