bash shell学习的记录(三)

版权声明:转载请标明出处,谢谢! https://blog.csdn.net/SimileciWH/article/details/84653996

1,怎么使用命令行位置参数

什么是命令行位置参数?举个简单的例子

$ ls
$ ls $HOME/Documents/123.txt
$ ./123 10 + 23
$ /etc/init.d/named reload

上面这四行命令行语句中位置参数列成表格来看更加清晰,

命令行指令($0) 位置参数个数($#) 位置参数($1…$9)
ls 0 Null
ls $HOME/Documents/123.txt 1 $HOME/Documents/123.txt
./123 10 + 23 3 10,+,23
/etc/init.d/named reload 1 reload

举个栗子:

#! /bin/bash


#__Filename__ : begin10.sh
#__Auther__   : simileciwh
#Email        : [email protected]
#Created date : 2018-11-30 14:53:14
# code is far away from bugs with the god animal protecting
#    I love animals. I have a lovely doggy!
#              ┏┓     ┏┓
#             ┏┛┻━━━━━┛┻┓
#             ┃    ☃    ┃
#             ┃  ┳┛  ┗┳ ┃
#             ┃     ┻   ┃
#             ┗━┓     ┏━┛
#               ┃     ┗━━━┓
#               ┃   神兽保佑  ┣┓
#               ┃   永无BUG!   ┏┛
#               ┗┓┓┏━━┳┓┏┛
#                ┃┫┫  ┃┫┫
#                ┗┻┛  ┗┻┛

IFS=", "
echo "Display all words using \$@"
echo "$@"
echo 
echo "Display all words using \$*"
echo "$*"

执行结果:

./begin10.sh we like each other
Display all words using $@
we like each other

Display all words using $*
we,like,each,other

**在这里,命令行的输入位置参数有"we, like, each, other"一共4个。$@会获得所有命令行输入测参数或者变量;$* 会以"$1y$2y$3y$4y"这种形式获得命令行位置输入的参数或者变量,而y的值是由$IFS确定的 **
因此,在本例中,使用两种方式获得命令行输入的位置参数或者变量。 IFS 在程序开始设置了默认值,因此$@和$*的输出样式不同。

命令行位置参数和变量可以通过$1, $2, $3,...,$9.获得
sdadkjal 含义
$* 获得所有命令行的位置参数和变量
$@ 获得所有命令行的位置参数和变量
$# 获得位置参数的数量
$- 获得shell支持的flags标志位
$? 获得之前执行命令的返回值
$! 获得最新的背景命令进程号
$$ 获得获得当前shell的进程号

举个栗子:
你可以新打开一个终端,然后通过 “$$” 查看当前shell的进程号,并使用 kill 命令将其杀掉。

$ echo $$
>>
>21307
$ kill -9 21307
#你会看到当前命令行自动关闭了。

这个栗子非常的有营养,这一招在bash中也非常的coooool!!!

猜你喜欢

转载自blog.csdn.net/SimileciWH/article/details/84653996
今日推荐