Linux脚本里使用未知参数设置变量名

在脚本里使用位置参数设置变量名,在终端命令行输入实际变量名,可以灵活的更改
先创建2个文件:

[admin@localhost Linux]$ vim m1.c
[admin@localhost Linux]$ vim m2.c
[admin@localhost Linux]$ cat m1.c
echo "you are a girl"
[admin@localhost Linux]$ cat m2.c
echo "you are a boy"

此时再创建一个脚本s.bat

[admin@localhost Linux]$ vim s.bat
[admin@localhost Linux]$ cat s.bat
 cat $1 $2 >$3
[admin@localhost Linux]$ bash s.bat m1.c m2.c m3.c
[admin@localhost Linux]$ cat m3.c
echo "you are a girl"
echo "you are a boy"

上述的操作等同于下面

[admin@localhost Linux]$ vim s.bat
[admin@localhost Linux]$ cat s.bat
set m1.c m2.c m3.c
cat $1 $2 >$3  
[admin@localhost Linux]$ bash s.bat 
[admin@localhost Linux]$ cat m3.c
echo "you are a girl"
echo "you are a boy"               

采用这种操作是直接在脚本里将实际变量名给出在终端命令行不需要再给出实际变量名

如果在脚本里进行如下操作

[admin@localhost Linux]$ cat s.bat
echo $1 $2 $3 $4 $5 $6
shift
echo $1 $2 $3 $4 $5 $6
shift
echo $1 $2 $3 $4 $5 $6
shift
echo $1 $2 $3 $4 $5 $6
shift
[admin@localhost Linux]$ bash s.bat z x c v b n
z x c v b n
x c v b n
c v b n
v b n

在打印时这个shift所起到的作用就是每执行一次,未知参数向右移动一个位置

[admin@localhost Linux]$ vim s.bat
[admin@localhost Linux]$ cat s.bat
echo $0 $1 $2 $3 $4 $5 $6
shift
echo $0 $1 $2 $3 $4 $5 $6
shift
echo $0 $1 $2 $3 $4 $5 $6
shift
echo $0 $1 $2 $3 $4 $5 $6
shift
[admin@localhost Linux]$ bash s.bat z x c v b n m
s.bat z x c v b n
s.bat x c v b n m
s.bat c v b n m
s.bat v b n m

可以看出来echo $0处打印的并非z而是脚本名并且,这个未知参数不做任何的偏移。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值