您的位置:首页 > 运维架构 > Linux

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

2017-03-29 00:15 411 查看
在脚本里使用位置参数设置变量名,在终端命令行输入实际变量名,可以灵活的更改

先创建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而是脚本名并且,这个未知参数不做任何的偏移。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: