bash命令

1.执行交互式命令

用户在命令行输入命令后,一般情况下Shell会fork 并exec 该命令,但是Shell的内建命令例外,执
行内建命令相当于调用Shell进程中的一个函数,并不创建新的进程。以前学过
的cd、alias 、umask 、exit 等命令即是内建命令,凡是用which 命令查不到程序文件所在位置的命

令都是内建命令,内建命令没有单独的man手册,要在man手册中查看内建命令


2.执行脚本 请点评
首先编写一个简单的脚本,保存为script.sh :

Shell会fork 一个子进程并调用exec 执行./script.sh这个程序,exec 系统调用应该把子进程的代码
段替换成./script.sh程序的代码段,并从它的_start开始执行。然而script.sh 是个文本文件,根
本没有代码段和_start函数,怎么办呢?其实exec 还有另外一种机制,如果要执行的是一个文本文
件,并且第一行用Shebang指定了解释器,则用解释器程序的代码段替换当前进程,并且从解释器
的_start开始执行,而这个文本文件被当作命令行参数传给解释器。因此,执行上述脚本相当于执
行程序
$ /bin/sh ./script.sh
以这种方式执行不需要script.sh 文件具有可执行权限。

3.位置参数和特殊变量
有很多特殊变量是被Shell自动赋值的,我们已经遇到了$?和$1,现在总结一下:
 常用的位置参数和特殊变量
$0 相当于C语言main 函数的argv[0]
$1 、$2 ... 这些称为位置参数(Positional Parameter),相当于C语言main 函数
                                                的argv[1]、argv[2]...
$# 相当于C语言main 函数的argc - 1,注意这里的#后面不表示注释
$@ 表示参数列表"$1" "$2" ... ,例如可以用在for 循环中的in后面。
$? 上一条命令的Exit Status
$$ 当前Shell的进程号



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值