Shell: source+位置参数+Shell里面的true(0)和false+函数

source 命令。

source 很多时候在 bash 中被简写为句点(.),是脚本调用的一种特殊形式。Shell 的基本
工作方式就是先创建子进程,然后执行新的命令;但是如果希望脚本在 Shell 进程内直接执
行,则可用 source 命令来调用脚本。它仅限于脚本,不可以对二进制文件使用。
通常来说,如果希望一个脚本能够改变当前 Shell 自身的一些属性,则必须在 Shell 进
程内执行。如修改了系统配置脚本/etc/profile 或个人配置脚本~/.profile 和~/.bashrc,欲使其
生效,必须用 source 命令执行该文件。例如:
$ source /etc/profile 或者 . /etc/profile

 

位置参数
位置参数就是按照位置引用的命令行参数,Shell 脚本被调用时可以传递参数给它。在
脚本中按照顺序就是$0、$1„„来引用,依此类推。其中,$0 代表命令本身,所以一般在
Shell 中引用命令行参数时不包括$0。
有如程序所示的脚本,会包括程序本身名称$0 在内的四个位置参数。
程序清单 打印位置参数示例
#!/bin/sh
echo $0
echo $1
echo $2
echo $3
实际运行结果如图所示。

Shell: source+位置参数+Shell里面的true(0)和false+函数
                                            脚本命令行参数
关于命令行参数的特殊变量还有三个:$#、$*和[email protected],它们的用法差异如表所列。
$#、$*和 [email protected]变量说明
$# 代表命令行参数的个数
$* 代表全部的命令行参数,而且全部作为一个单词。引用时必须在“”之中
[email protected] 代表所有的命令行参数,但是每个参数是一个独立的单词,引用时也要在“”中
说明:以上三个变量统计命令行参数中均不包含$0。
如程序清单 演示脚本,分别打印参数个数,使用$*和[email protected]创建文件。
程序清单参数变量不同点演示
#!/bin/sh
echo $#
touch "$*"
ls -l
touch "[email protected]"
ls -l
因为 touch 可以接受多个参数同时创建多个文件,每个参数是一个单词;$*将所有参数
当作一个单词,故创建了一个文件名是全部参数的文件;而[email protected]的每一个参数都是独立的单
词,故每个参数都作为文件名创建了一个独立文件。在脚本中使用了 ls –l 命令列目录来验证

Shell: source+位置参数+Shell里面的true(0)和false+函数

true:0  false:1

对于 Bash 来说,每一个命令同时也是一个逻辑表达式,用它们的返回值来代表它们的
真值,返回 0 为真,返回非 0 为假。这个值就是命令的 main()函数的返回值,该值可用“$?”
来获取。在脚本中 true 命令也经常用冒号(:)来代替

函数
Bash 脚本中也可以定义函数,Bash 里的函数行为像是一个独立的子脚本,故对于调用
者来说,Shell 中的函数和一个独立的命令区别并不大。
Bash 中有两种定义函数的方法,一种是通过 function 关键字来定义,如:
function function_name {
command...
}
另有一种定义方法与 C 函数类似:
function_name () {
command...
}
后一种更具有可移植性,推荐使用。 Bash 中没有类似于 C 中提前“声明”函数的方法,
任何函数都应该在其被调用前完整定义。

#!/bin/sh
echo"demo for function and call"
fun() {
echo "I‘am in func()"
}
fun
echo "end"