码迷,mamicode.com
首页 > 系统相关 > 详细

Linux下Bash编程之位置和特殊变量(四)

时间:2016-04-14 16:12:55      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:linux下bash编程之位置和特殊变量(四)

Linux下Bash编程之位置和特殊变量(四)

1.bash位置变量: 

$1, $2, ...第1个参数,第二个参数,...

shift 轮询替换,剔除

举例说明:利用脚本解释位置变量的意思,创建如下脚本:

nano shift.sh 创建一个脚本文件,新增以下内容

#!/bin/bash

#

if [ $# -lt 5 ]; then   脚本后面参数不少于5个

  echo "./shift.sh ARG1....ARG5"

  exit 5

fi

echo "ARGS:$1 $2 $3 $4 $5" 分别显示第1至第5个参数

echo $1  显示脚本后面的第一个参数

#shift   注释,默认向前剔除1个参数

shift 2  向前剔除2个参数,第3个参数变第1个参数

echo $1  虽显示脚本后面第1个参数,实际是脚本的第3个参数

shift 2  向前剔除2个参数, 第5个参数变第1个参数

echo $1  虽显示脚本后面第1个参数,实际是脚本的第5个参数

技术分享

./shift 1 2 3 4 5 执行结果显示如下

技术分享


2.bash特殊变量:

$?:执行状态码返回值 

$#:参数的个数

$*: 参数列表

$@:参数列表


举例说明:创建一个脚本,脚本后面至少跟一个参数,并且显示参数个数及列表,否则退出此脚本

vim special.sh 创建脚本文件

#!/bin/bash

#

if [ $# -lt 1 ]; then

   echo "Usage:./special.sh ARG1 [ARG2...]"

   exit 9

fi

echo "\$# is $#"  显示参数个数

echo "\$* is $*"  列表

echo "\$@ is $@"  列表

技术分享

chmod a+x special.sh 授于执行权限

./special /etc/passwd /etc/shadow /proc

技术分享

3.文件测试:

-e FILE:测试文件是否存在

-f FILE: 测试文件是否为普通文件

-d FILE: 测试指定路径是否为目录

-r FILE: 测试当前用户对指定文件是否有读取权限;

-w FILE: 测试当前用户对指定文件是否有写入权限;

-x FILE: 测试当前用户对指定文件是否有执行权限;

4.脚本退出命令

  exit n  n使用0-255的退出状态码数值 

PS:如果脚本没有明确定义退出状态码,那么最后执行的一条命令的退出码即为脚本的退出状态码;

举例说明:指定一个文件:如果是一个普通文件,就显示file;如果是一个目录,显示directory;

       否则,此为无法识别的文件;请创建这样的脚本文件

vim exist.sh 创建脚本文件

#!/bin/bash

FILE=/etc/rc.d/rc.sysinit

if [ ! -e $FILE ]; then   判断文件是否存在

   echo "NO such $FILE"

   exit 88          不存在退出当前脚本,退出码为88,可在0-255之间随意写

fi


if [ -f $FILE ]; then       判断是否为文件

   echo "$FILE is file"

elif [ -d $FILE ]; then      判断是否为目录 

   echo "$FILE is directory"

else

   echo "I do not known this $FILE"  不认识的文件

fi

技术分享


5.测试脚本

bash -n 脚本 语法错误检查:

bash -x 脚本:单步执行步骤


bash -x exist.sh 测试脚本执行步骤

本文出自 “夏维柳” 博客,请务必保留此出处http://willow.blog.51cto.com/6574604/1763764

Linux下Bash编程之位置和特殊变量(四)

标签:linux下bash编程之位置和特殊变量(四)

原文地址:http://willow.blog.51cto.com/6574604/1763764

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!