您的位置:首页 > 运维架构 > Shell

shell脚本部分命令用法

2014-03-18 17:51 381 查看

1、 if用法:

格式:

if [ 条件 ];then

Command

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 command1
do

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表示失败
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐