学习目标
位置参数
内部参数

如同ls命令可以接受目录等作为它的参数一样,在Shell编程时同样可以使用参数。Shell程序中的参数分为位置参数和内部参数等。

12-3-1 位置参数
由系统提供的参数称为位置参数。位置参数的值可以用$N得到,N是一个数字,如果为1,即$1。类似C语言中的数组,Linux会把输入的命令字符串分段并给每段进行标号,标号从0开始。第0号为程序名字,从1开始就表示传递给程序的参数。如$0表示程序的名字,$1表示传递给程序的第一个参数,以此类推。

12-3-2  内部参数
上述过程中的$0是一个内部变量,它是必须的,而$1则可有可无,最常用的内部变量有$0、$#、$?、$*,它们的含义如下。
$0: 含命令所在的路径。
$#: 传递给程序的总的参数数目。
$?: Shell程序在Shell中退出的情况,正常退出返回0,反之为非0值。
$*: 传递给程序的所有参数组成的字符串。

实例:编写一个Shell程序,用于描述Shell程序中的位置参数为:$0、$#、$?、$*,程序名为test1,代码如下:

root@ubuntu:~$ vi test1
#! /bin/sh
 
echo "Program name is $0";
echo "There are totally $# parameters passed to this program";
echo "The last is $?";
echo "The parameter are $*";
 
root@ubuntu:~$ ./test1 this is a test program //传递5个参数
执行后的结果如下:
Program name is ./test1 //给出程序的完整路径和名字
There are totally parameters passed to this program //参数的总数
The last is //程序执行效果
The parameter are this is a test program  //返回由参数组成的字符串
 

注意:命令不计算在参数内。
        
实例:利用内部变量和位置参数编写一个名为test2的简单删除程序,如删除的文件名为a,则在终端中输入的命令为:test a。
分析:除命令外至少还有一个位置参数,即$#不能为0,删除不能为$1,程序设计过程如下。

)、用vi编辑程序
root@ubuntu:~$ #vi test2
#! /bin/sh
 
if test $# -eq
    then echo "Please specify a file!"
else
    gzip $ //现对文件进行压缩
    mv $.gz $HOME/dustbin //移动到回收站
    echo "File $1 is deleted !"          
fi
 
)、设置权限
root@ubuntu:~$ chmod +x test2
 
)、运行
root@ubuntu:~$ ./test2
Please specify(指定) a file!
root@ubuntu:~$ ./test2 a
gzip: a: No such file or directory
mv: cannot stat `a.gz': No such file or directory
File a is deleted !
root@ubuntu:~$ touch a
root@ubuntu:~$ ./test2 a  (如果a文件在当前目录下存在)
File a is deleted !
 

3、在Shell程序中使用的参数的更多相关文章

  1. 学习Shell脚本编程(第3期)_在Shell程序中使用的参数

    位置参数 内部参数 如同ls命令可以接受目录等作为它的参数一样,在Shell编程时同样可以使用参数.Shell程序中的参数分为位置参数和内部参数等. 3.1 位置参数 由系统提供的参数称为位置参数.位 ...

  2. Shell脚本中判断输入参数个数的方法投稿:junjie 字体:[增加 减小] 类型:转载

    Shell脚本中判断输入参数个数的方法 投稿:junjie 字体:[增加 减小] 类型:转载   这篇文章主要介绍了Shell脚本中判断输入参数个数的方法,使用内置变量$#即可实现判断输入了多少个参数 ...

  3. 学习Shell脚本编程(第4期)_在Shell程序中的使用变量

    变量的赋值 变量的访问 变量的输入 4.1 变量的赋值     在Shell编程中,所有的变量名都由字符串组成,并且不需要对变量进行声明.要赋值给一个变量,其格式如下: 变量名=值  注意: 等号(= ...

  4. 将应用程序中的一些参数写到xml配置文件中

    最近碰到一个问题,需要将程序中的一些基本参数写到xml文件中,虽然网上有好多现成的代码,但是觉得对xml不熟悉,果断就研究了一下.先说一下大体思路吧,我设计了一个用来读取和回填的类,然后定义了一个接口 ...

  5. 【转】shell脚本中如何传入参数

    (1)直接用$1,$2取传入的参数vim /root/test.sh#!/bin/bashif [ $1 == "start" ]  then     echo "do ...

  6. 4、在Shell程序中的使用变量

    学习目标变量的赋值变量的访问变量的输入 12-4-1 变量的赋值在Shell编程中,所有的变量名都由字符串组成,并且不需要对变量进行声明.要赋值给一个变量,其格式如下:变量名=值.注意:等号(=)前后 ...

  7. Shell脚本中判断输入变量或者参数是否为空的方法

    shell判断一个变量是否为空方法总结 https://www.jb51.net/article/154835.htm 1.判断变量 复制代码代码如下: read -p "input a w ...

  8. 学习Shell脚本编程(第2期)_编写修改权限及执行Shell程序的步骤

    编写Shell程序 执行Shell程序 Shell程序有很多类似C语言和其他程序设计语言的特征,但是又没有程序语言那样复杂.Shell程序是指放在一个文件中的一系列Linux命令和实用程序.在执行的时 ...

  9. shell脚本中的[]/[[]]区别

    转自:http://www.cnblogs.com/include/archive/2011/12/09/2307905.html 引用: http://www.51testing.com/?uid- ...

随机推荐

  1. CentOS 下 zookeeper 安装

     搭建zookeeper需要几个条件 a. 配置Java环境  c. centos d. 下载 xshell5 (下载它只是为了更方便的使用linux)     一.新建一个myapp目录: 二.下载 ...

  2. python之文件操作总结

    目录 文件:数据的抽象和集合 文件的打开关闭 文件内容的读取 文件的全文本操作 文件的逐行操作 数据文件的写入 使用json模块 文件:数据的抽象和集合 文件是存储在辅助存储器上的数据序列 文件是数据 ...

  3. IE8下window.open 二次无法加载页面

    我原先的IE是系统默认自带的IE7,升级到IE8之后,就出现了此现象: 打开一个窗口(window.open方式)后,再打开时,新窗口的页面显示空白,无法加载其内容.关闭ie后,重新偿亦是如此,第一次 ...

  4. Transaction And Lock--两种方式实现可重复读

    一些需求要求两次查询数据之间不允许数据被修改,即可重复读取 可重复读REPEATABLE READ与串行化SERIALIZABLE的区别在于串行化要求满足该查询的数据不被修改且无新满足该查询条件的数据 ...

  5. 5个Shell脚本编程入门练习例子

    例子一:绘制特殊图形 复制代码代码如下: #!/bin/bash MAX_NO=0 echo -n "Enter Number between (5 to 9) : " read ...

  6. Metabase 从 H2 迁移到 MySQL 踩坑指南

    写在前面的话 首先如果你看到了这篇文章,可能你就已经指定 Metabase 是啥了,我这里还是简单的做个说明: Metabase is the easy, open source way for ev ...

  7. 配合前端开发,调试前端页面bug

    同事开发的H5页面  在iOS10.1的手机上会有bug 先下载ios10.1的模拟器,安装到xcode上,注意给电脑腾出足够的空间 https://stackoverflow.com/questio ...

  8. Major compaction时的scan操作

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u014393917/article/details/24419355 Major compactio ...

  9. 洛谷P5245 【模板】多项式快速幂

    题面 传送门 题解 话说现在还用数组写多项式的似乎没几个了-- \[B(x)=A^k(x)\] \[\ln B(x)=k\ln A(x)\] 求个\(\ln\),乘个\(k\),\(\exp\)回去就 ...

  10. web渗透-sql注入

    何为sql注入 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,得到想要得到的信息. OWASPTop 10 此处的注 ...