shell路径变量 vba_位置变量在Shell脚本编程中的作用

位置变量:

如果要向一个shell脚本传递信息,可以使用位置参数完成此功能;参数相关数目传入脚本,此数目可以任意多,但只有前9个可以被访问,使用shift命

令可以改变这个限制;参数从第一个开始,在第九个结束;每个访问参数前要加$符号;第一个参数为0,表示预留保存实际脚本名字;无论脚本是否有参数,此值

均可用.

变量名:

$0,

$1,

$2,

$3,

$4,

$5,

$6,

$7,

$8,

$9

说明:

$0: 表示脚本名称。

$1,$2,…,$9:$1表示向脚本传递的第一个参数,$2表示向脚本传递的第二个参数,…,$9表示向脚本传递的第九个参数.

特殊变量(参数)

shell对一些参数做特殊处理,这些参数只能被引用而不能被赋值.

特定shell变量如下:

$# 传递到脚本的参数个数;

$* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个;

$$ 脚本运行的当前进程ID号;

$! 后台运行的最后一个进程的进程ID号;

$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数;

$- 显示shell使用的当前选项,与set命令功能相同;

$? 显示最后命令的退出状态.0表示没有错误,其他任何值表明有错误;

示例:

[root@localhost bin]# cat test.sh

#!/bin/bash

#

#

#

#

echo "此脚本的名称$0为:$0"

echo "此脚本的第一个位置参数$1为:$1"

echo "此脚本的第二个位置参数$2为:$2"

echo "此脚本的第三个位置参数$3为:$3"

echo "此脚本的第四个位置参数$4为:$4"

echo "此脚本的第五个位置参数$5为:$5"

echo "此脚本的第六个位置参数$6为:$6"

echo "此脚本的第七个位置参数$7为:$7"

echo "此脚本的第八个位置参数$8为:$8"

echo "此脚本的第九个位置参数$9为:$9"

echo "此脚本的第十个位置参数$10为:$10"

echo "此脚本的参数的个数为:$#"

echo "此脚本的所有参数为$*"

echo "此脚本的所有参数为$@"

此脚本输出结果为:

[root@localhost bin]# pos.sh `seq 1 10`

此脚本的名称/root/bin/pos.sh为:/root/bin/pos.sh

此脚本的第一个位置参数1为:1

此脚本的第二个位置参数2为:2

此脚本的第三个位置参数3为:3

此脚本的第四个位置参数4为:4

此脚本的第五个位置参数5为:5

此脚本的第六个位置参数6为:6

此脚本的第七个位置参数7为:7

此脚本的第八个位置参数8为:8

此脚本的第九个位置参数9为:9

此脚本的第十个位置参数10为:10

此脚本的参数的个数为:10

此脚本的所有参数为1 2 3 4 5 6 7 8 9 10

此脚本的所有参数为1 2 3 4 5 6 7 8 9 10

$* 和 $@ 的区别

$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。

但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。

下面的例子可以清楚的看到 $* 和 $@ 的区别:

#!/bin/bash

echo "\$*=" $*

echo "\"\$*\"=" "$*"

echo "\$@=" $@

echo "\"\$@\"=" "$@"

echo "print each param from\$*"

for var in $*

do

echo "$var"

done

echo "print each param from\$@"

for var in $@

do

echo "$var"

done

echo "print each param from\"\$*\""

for var in "$*"

do

echo "$var"

done

echo "print each param from\"\$@\""

for var in "$@"

do

echo "$var"

done

执行 ./test.sh "a" "b" "c" "d",看到下面的结果:

$*=  a b c d

"$*"= a b c d

$@=  a b c d

"$@"= a b c d

print each param from $*

a

b

c

d

print each param from $@

a

b

c

d

print each param from "$*"

a b c d

print each param from "$@"

a

b

c

d

原创文章,作者:YOUNG,如若转载,请注明出处:http://www.178linux.com/35639

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值