linux基础之shell编程(3)-给脚本设置参数

bash的变量类型


本地变量(局部变量)
环境变量
位置变量:$1,$2,$3, ...
特殊变量:$?,$#,$*,[email protected]

那让脚本拥有获取外界参数的能力就要用的位置变量,$1代表第一个参数,$2代表第二个参数,依次类推

例:

vartest.sh

#!/bin/bash
#
ONEVAR=$1
TWOVAR=$2
THREEVAR=$3
echo "第一个参数是:${ONEVAR}"
echo "第二个参数是:${TWOVAR}"
echo "第三个参数是:${THREEVAR}"

结果:

[root@iZ28g26851kZ ~]# ./vartest.sh /etc/passwd /etc/inittab /etc/rc.d/
第一个参数是:/etc/passwd
第二个参数是:/etc/inittab
第三个参数是:/etc/rc.d/
[root@iZ28g26851kZ ~]# 

这里再来写文件是否存在的例子

filetest.sh

#!/bin/bash
#
FILENAME=$1
if [ -e $FILENAME ];then
  echo "文件存在"
else
  echo "文件不存在"
fi

结果

[root@iZ28g26851kZ ~]# ./filetest.sh /etc/passwd
文件存在
[root@iZ28g26851kZ ~]# ./filetest.sh /etc/passwdasdas
文件不存在
[root@iZ28g26851kZ ~]# 

是不是很方便了,,

如果不带参数会怎么样呢,,,

[root@iZ28g26851kZ ~]# ./filetest.sh
文件存在
[root@iZ28g26851kZ ~]# 

呵呵,,这就非常尴尬了~~

要是能获取传进来的参数的个数就好了,,

这里就要引入特殊变量

$?:获取上一条命令执行的状态  --这个之前有讲过
$#:获取脚本传进来的参数的个数   --haha,要的就是这个,有木有
$*:显示参数的列表
[email protected]:显示参数的列表

好,再看

filetest.sh

#!/bin/bash
#
if [ $# -lt 1 ];then
  echo "Usage:filetest.sh ARG"
  exit 6
fi

FILENAME=$1
if [ -e $FILENAME ];then
  echo "文件存在"
else
  echo "文件不存在"
fi

结果

[root@iZ28g26851kZ ~]# ./filetest.sh
Usage:filetest.sh ARG
[root@iZ28g26851kZ ~]# ./filetest.sh /etc/passwdasdas
文件不存在
[root@iZ28g26851kZ ~]# ./filetest.sh /etc/passwd
文件存在
[root@iZ28g26851kZ ~]# 

ok,就是这样

那么问题又来了,如果有100个参数,难道我要$1,$2,$3,$4,….这样引用那就要写死了,

所以再引入一个命令shift

shift



在脚本中使用shift命令可以将第一个参数“踢出去”,让第二个参数编程第一个参数,这样我们只用$1就能引用所有变量了

shifttest.sh

#!/bin/bash
#
echo $1
shift
echo $1
shift
echo $1

结果:

[root@iZ28g26851kZ ~]# ./shifttest.sh  asd fsdf 654
asd
fsdf
654
[root@iZ28g26851kZ ~]#

这样就可以依次取出参数了

时间: 2024-07-31 23:09:58

linux基础之shell编程(3)-给脚本设置参数的相关文章

linux 基础与shell编程[笔记]

linux 基础与shell编程 linux 系统知识 linux是一个OS ,也是一个完全免费 开源 自由软件 linux 1991   荷兰大学生课程设计   unix GPL协议 GPL:General Public License 是一份GNU(完全自由软件操作系统)是一个广泛使用的自由软件许可证条款 常见的linux发行版本: Debian:Debian为一款提供您安装在计算机上使用的操作系统 (OS).操作系统就是能让您的计算机工作 的一系列基本程序和实用工具.由于 Debian 采

linux基础之shell编程(1)

shell:属于弱类型编程语言 什么是弱类型,什么是强类型? 强类型:变量在使用前,必须事先声明,甚至还需要初始化: 弱类型:变量用时声明,甚至不区分类型: 变量赋值,引用 赋值:VAR_NAME=VALUE 引用:${VARNAME} (花括号一般可以省略) 例: [root@iZ28g26851kZ ~]# name=test --赋值 [root@iZ28g26851kZ ~]# echo $name --引用 test [root@iZ28g26851kZ ~]# bash变量类型 环境

linux基础之shell编程(2)-条件判断,算数运算,测试

bash中如果实现条件判断? 条件测试类型 整数测试 字符测试 文件测试 条件测试的表达式 有三种 [ expression ] --方括号与表达式之间一定要有一个空格 [[ expression ]] test expression 整数测试 -eq: 测试两个整数是否相等 例:$A -eq $B -ne: 测试两个整数是否不等 不等为真,相等为假 -gt: 测试一个数是否大于另一个数:大于,为真:否则,为假: -lt: 测试一个数是否小于另一个数:小于,为真:否则,为假: -ge: 大于或等

linux基础之shell编程(4)-for循环

for循环 用法: for 变量 in 列表; do 循环体 done 那么如何生成列表呢? {1..100} 这样就能生成列表了 =========================================== 例: #!/bin/bash # for I in {1..100};do echo $I done seq 用seq命令也可以生成列表 用法: seq [起始数 [步进长度]] 结束数 例: [root@iZ28g26851kZ ~]# seq 1 10 1 2 3 4 5 6

Linux下的shell编程入门

通常情况下,我们从命令行输入命令每输入一次就能够得到系统的一次响应.一旦需要我们一个接着一个的输入命令而最后才得到结果的时候,这样的做法显然就没有效率.要达到这样的目的,通常我们利用shell程序或者shell脚本来实现. 一.简介 Shell编程有很多类似C语言和其他程序语言的特征,但是又没有编程语言那样复杂.Shell程序就是放在一个文件中的一系列Linux命令和实用程序,在执行的时候,通过Linux一个接着一个地解释和执行每个命令. 下面我们来看一个简单的shell程序: 1.首先建立一个

shell编程之服务脚本编写,文件锁以及信号捕获

shell脚本编程是linux运维工程师必备的技能,也是非常重要的一个技能,所以把shell编程学好,只有好处.基础语法我也就不讲了,学过C语言这些语言的,稍微看一下就能明白shell编程的基础,所以我们直接切入正题. 开班第20天: 今天的课程大纲: shell编程中的函数 编写一个自动挂载的脚本 利用autofs怎么实现自动挂载 文件锁和信号捕获trap sed流文件编辑器 详细讲解: shell编程中的函数 shell中,我们定义函数的方法有两种: 下面调用的时候,直接调用函数名就可以了

Linux基础知识——shell命令类型及命令使用帮助

加入马帮有一段时间了,看到群里面大总管要检查博客,才意识到,原来我还没有写过作业.俗话说的好,时间是把杀猪刀!!!咳咳,其实想说,马哥视频忒长,内容贼多,对于文笔不好我来说,写作业压力山大啊,有木有.嗯.嗯,长话短说,进入正题. 两个星期过去,课程进度有点掉队,这篇博文主要记录基础命令课程知识,用于梳理知识点并加深印象,为今后行走linux之路打下坚实基础的好开端,完成该博文并回顾相关知识点后,期望加快学习步伐,稳扎稳打,跟上进度,good good study,day day up! 1.  

Linux学习之Shell编程基础

转自:http://my.oschina.net/itblog/blog/204410 1 语法基本介绍1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序.  当编辑好脚本时,如果要执行该脚本,还必须使其可执行.  要使脚本可执行: 编译 chmod +x filename 这样才能用./filename 来运行 1.2 注释  在进行shell编程时,以#开头的

Linux与Unix shell编程指南(完整高清版).pdf

找到一本很详细的Linux Shell脚本教程,其实里面不光讲了Shell脚本编程,还介绍了系统的各种命令 http://vdisk.weibo.com/s/yVBlEojGMQMpv 本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题.本书内容全面.文字简洁流畅,适合Shell编程人员学习.参考. 目      录 译者序 前言 第一部分   shell 第1章   文件安全与权限 1 1.1   文件 1 1.2   文件