IFS的默认值为:空白(包括:空格,制表符,换行符).
Shell函数
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。
[ function ] funname [()]{
action;
[return int;]
}
- 可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
- 参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)
程序示例:
#!/bin/bash
demoFun(){
echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"
函数参数
在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数。
#!/bin/bash
funWithParam(){
echo "第一个参数为 $1 !"
echo "第二个参数为 $2 !"
echo "第十个参数为 $10 !"
echo "第十个参数为 ${10} !"
echo "第十一个参数为 ${11} !"
echo "参数总数有 $# 个!"
echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
Shell输入/输出重定向
nohup command > myout.file 2>&1 &
# 操作系统常用的三种流操作:
# 0 标准输入
# 1 标准输出流
# 2 标准错误流
# 一般,我们在使用">、>>、< "等未指明时,默认使用0和1
# 上述指令解释:将command添加到后天运行,并把标准错误流输出到标准输出中,
# 避免标准输出和标准错误同时输出到文件myout.file产生文件读写竞争。
Shell文件包含
和其他语言一样,Shell 也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为一个独立的文件。
可以使用. filename # 注意点号(.)和文件名中间有一空格
或source filename
来引用文件。
- test_1.sh
#! /bin/bash hostsa=/etc/hosts cat $hostsa mine="this is timebusker"
- test_2.sh
#!/bin/bash source /root/test_1.sh echo ".............$hostsa" echo ".............$mine"
注意
- 单引号属于强引用,它会忽略所有被引起来的字符的特殊处理,被引用起来的字符会被原封不动的使用,唯一需要注意的点是不允许引用自身;
- 双引号属于弱引用,它会对一些被引起来的字符进行特殊处理,主要包括以下情况:
- $加变量名可以取变量的值
- 反引号和$()引起来的字符会被当做命令执行后替换原来的字符
- 当需要使用字符
$ " \
时必须进行转义,也就是在前面加\