shell编程 Shell script 的默认变量($0, $1...)

Shell script 的默认变量($0, $1...)

我们知道指令可以带有选项与参数,例如 ls -la 可以察看包含隐藏文件的所有属性与权限。那么 shell script 能不能在脚本文件名后面带有参数呢?很有趣喔!举例来说,如果你想要重新启动系统登录文件的功能,可以这样做:

[[email protected] ~]# file /etc/init.d/syslog

/etc/init.d/syslog: Bourne-Again shell script text executable

# 使用 file 来查询后,系统告知这个文件是个 bash 的可执行 script 喔!

[[email protected] ~]# /etc/init.d/syslog restart

restart 是重新启动的意思,上面的指令可以”重新启动 /etc/init.d/syslog 这个程序”的意思! 唔!那么如果你在 /etc/init.d/syslog 后面加上 stop 呢?没错!就可以直接关闭该服务了!这么神奇啊? 没错啊!如果你要依据程序的执行给予一些变量去进行不同的任务时,本章一开始是使用 read 的功能!但 read 功能的问题是你得要手动由键盘输入一些判断式。如果透过指令后面接参数, 那么一个指令就能够处理完毕而不需要手动再次输入一些变量行为!这样执行指令会比较简单方便啦!

script 是怎么达成这个功能的呢?其实 script 针对参数已经有设置好一些变量名称了!对应如下:

/path/to/scriptname  opt1  opt2  opt3  opt4

$0                          $1      $2       $3    $4

这样够清楚了吧?执行的脚本文件名为 $0 这个变量,第一个接的参数就是 $1 啊~ 所以,只要我们在 script 里面善用 $1 的话,就可以很简单的立即执行某些指令功能了!除了这些数字的变量之外, 我们还有一些较为特殊的变量可以在 script 内使用来调用这些参数喔!

$# :代表后接的参数”个数”,以上表为例这里显示为” 4 “;

[email protected] :代表” "$1" "$2" "$3" "$4" “之意,每个变量是独立的(用双引号括起来);

$* :代表” "$1c$2c$3c$4" “,其中 c 为分隔字符,默认为空格键, 所以本例中代表” "$1 $2 $3 $4" “之意。

那个 [email protected] 与 $* 基本上还是有所不同啦!不过,一般使用情况下可以直接记忆 [email protected] 即可!

好了,来做个例子吧~假设我要执行一个可以携带参数的 script ,执行该脚本后屏幕会显示如下的数据:

程序的文件名为何?

共有几个参数?

若参数的个数小于 2 则告知使用者参数数量太少

全部的参数内容为何?

第一个参数为何?

第二个参数为何 ?

[[email protected] scripts]# vi sh07.sh

#!/bin/bash

# Program:

#  Program shows the script name, parameters...

# History:

echo "The script name is        ==> $0"

echo "Total parameter number is ==> $#"

[ "$#" -lt 2 ] && echo "The number of parameter is less than 2.  Stop here."  && exit 0

echo "Your whole parameter is   ==> ‘[email protected]‘"

echo "The 1st parameter         ==> $1"

echo "The 2nd parameter         ==> $2"

源程序如下:

1 echo "The script name is        ==> $0"
2 echo "Total parameter number is ==> $#"
3 [ "$#" -lt 2 ] && echo "The number of parameter is less than 2.  Stop here."  && exit 0
4 echo "Your whole parameter is   ==> ‘[email protected]‘"
5 echo "The 1st parameter         ==> $1"
6 echo "The 2nd parameter         ==> $2"

创建shell文件,并命名为shell07.sh

回车(Enter),用vi编辑器编写shell07.sh

执行结果如下:

时间: 2024-10-29 19:08:06

shell编程 Shell script 的默认变量($0, $1...)的相关文章

shell 编程(四):变量

变量 变量是能储存计算结果或能表示值抽象概念.变量可以通过变量名访问. 变量声明 声明变量一般使用下面方式: [email protected]:~# var=test #这里声明了一个名为 var 的变量,并给他赋值为test [email protected]:~# # "="前后不能有空格,变量名区分大小写 或者下面方式: [email protected]:~/HtmlDOM/Libs# declare var1=123 [email protected]:~/HtmlDOM/

[ SHELL编程 ] shell编程中数值计算方法实例

SHELL编程中经常会涉及到数值的相关计算,有时候对于这些计算命令的时候场景容易忘记或者混淆,这里针对常用的计算做一个总结.主要包括let.bc.expr.(())等. 1.let 使用格式:let 表达式,表达式必须是完整的表达式,即等号两边.只能赋值,不支持浮点数运算,不支持直接输出 $ var=10 $ let var+=2 #var=12,中间不能有空格 $ let var=var+2 #var=14 $ let var*=2 #var=28 $ let var/=2 # var=14

shell编程---文件测试及特殊变量

一.算数运算 1.let 算术运算表达式 let C=$A+$B 2.$[算术运算表达式] C=$[$A+$B] 3.$((算术运算表达式)) C=$(($A+$B)) 4.expr 算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用 C=`expr $A + $B` 5.提前结束脚本程序 exit 状态返回码 6.文件测试 -e FILE:测试文件是否存在 -f FILE: 测试文件是否为普通文件 -d FILE: 测试指定路径是否为目录 -r FILE: 测试当前用户对

[ SHELL编程 ] shell中各种括号的使用方法

转载自:http://www.jb51.net/article/60326.htm 在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下:1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+string},${var:=string},${var:?string} 5.$((exp)) 6.$(var%pattern),$(var%%pattern),$(var#pattern),$(var##pattern)现在分

Shell编程——shell常用命令

浏览器标签页的切换:Ctrl+Tab [终端]打开终端快捷建:Ctrl+Alt+t关闭终端快捷键:Ctrl+Shift+q打开新的终端标签页快捷键:Ctrl+Shift+t 关闭终端标签页快捷键:Ctrl+Shift+w终端页之间的切换快捷键:Ctrl+PgUp终止进程:Ctrl+c退出程序:Ctrl+d用火狐浏览器打开网页:firefox www.baidu.com 清屏:Ctrl + l [列目录内容ls]    ls -a:列出所有文件及目录    ls -l:长格式列表    ls -F

SHELL编程-Shell编程进阶

1.1 shell脚本介绍 shell结构以及执行

(三)Linux Shell编程——Shell常用命令(输出、判断、循环、函数、包含)

3. 常用命令 3.1 输出 3.1.1 echo命令 echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串.命令格式: echo arg name="coding" echo '$name\"'+" ${name}" #原样输出 $name\"+ coding echo `date` #当前日期 3.1.2 printf命令 printf 命令用于格式化输出, 是echo命令的增强版.它是C语言printf()库函数的一个有限的变

Linux编程 20 shell编程(shell脚本创建,echo显示信息)

一概述 前面19章里已经掌握了linux系统和命令行的基础知识,从本章开始继续学习shell脚本的基础知识.在大量编辑shell脚本前,先来学习下一些基本概念. 1.1    使用多个命令 Shell可以让多个命令串起来,一次执行完成,可以把它们放在同一行中,用分号隔开,如下所示: 上面就是一个简单的脚本了,用到了两个bash shell命令,但每次运行之前,都必须在命令提示符下输入整个命令.如果将命令组合成一个简单的文本文件,需要时运行这个文本文件就行了. 1.2    创建shell 脚本文

[ SHELL编程 ] shell多线程操作实例

1.需求 查找192.168.0.*网段中所有未使用过的IP 2.实现     我们知道查找未使用IP的方法可以使用ping命令完成.对于单个IP的判断,使用命令如下 $ ping -c 1 192.168.0.1 PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. 64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.031 ms --- 192.168.0.1 ping statistic