**注:**基础 —养成良好的习惯,并持之以恒
shell函数
#!/bin/bash #告诉系统用哪一种解析器
demoLearn(){
echo "一个简单的 shell 函数!"
}
echo "------调用函数-------"
demoLearn
echo "----函数成功执行---"
输出结果
------调用函数-------
一个简单的 shell 函数!
----函数成功执行---
#!/bin/bash
learnEva(){
echo "输入一个数字"
read aNum
echo "输入第二个数字"
read anotherNum
echo "输入的两个数字分别为 $aNum 和 $anotherNum !"
return $(($aNum+$anotherNum))
}
echo "下面调用函数"
learnEva #函数调用直接写函数名即可;
echo ”输入的两个数字之和为 $? !“ #函数返回值用 $? 来获得
函数参数
调用函数的同时可以向其传递参数
在函数内部通过 $n 来获取传递的参数
eg:
learnEvd(){
echo "获取第一个参数 $1 !"
echo "获取第二个参数 $2 !"
echo "获取第三个参数 $3 !"
echo "获取第四个参数 $4 !"
echo "获取第五个参数 $5 !"
echo "输出所有参数 $* !"
echo "参数个数: $# 个!"
}
learnEvd 1 2 3 4 6 #函数调用前先定义
注:
- 当参数个数n>=10的时候 ${n} 用大括号标记参数的边界
- $? 仅对其上一条指令负责,一旦函数返回后其返回值没有立即保存入参数,那么其返回值将不再能通过 $? 获得。
函数与命令的执行结果可以作为条件语句使用–shell语言中 0 为true 其他数为false
#!/bin/bash
echo "Hello World !" | grep -e Hello
echo $?
echo "Hello World !" | grep -e Bye
echo $?
if echo "Hello World !" | grep -e Hello
then
echo true
else
echo false
fi
if echo "Hello World !" | grep -e Bye
then
echo true
else
echo false
fi
function demoFun1(){
return 0
}
function demoFun2(){
return 12
}
if demoFun1
then
echo true
else
echo false
fi
if demoFun2
then
echo ture
else
echo false
fi
输出结果为:
Hello World !
0
1
Hello World !
true
false
true
false
grep 是从给定字符串中寻找匹配内容的命令。首先看出如果找到了匹配的内容,会打印匹配部分且得到的返回值 $? 为 0,如果找不到,则返回值 $? 为 1。
shell 输入/输出重定向–(简单了解)-感受不深
>大于输出,<小于输入
命令 | 说明 |
---|---|
command > file | 将输出重定向到file |
command >> file | 将输出以追加的方式重定向到file |
n>&m | 将输出文件m和n合并 |
<< tag | 将开始标记和结束标记tag之间的内容作为输入 |
输出重定向实例
注:输出重定向会覆盖文件内容,如果不希望文件被覆盖可以采用>>追加到文件末尾
$ echo "我爱中国!河北加油!" > users #输出重定向到文件users
$ cat users #cat 命令查看users文件
我爱中国!河北加油!
$
同时替换输入和输出
command1 < infile > outfile #执行command1,从文件infile读取内容,然后将输出写入到outfile中。
特殊的重定向——Here Document
command << delimiter
document
delimiter # 将两个delimiter 之间的内容(document)作为传入传递给 command
注意:
- 结尾的delimiter 一定要顶格写,前面不能有任何字符,后面也不能有任何字符,包括空格和 tab 缩进。
- 开始的delimiter前后的空格会被忽略掉。
实例—在命令行中
$ wc -l << EOF
world
watching
CHINA
3 # 输出结果为 3 行
$
在脚本中
#!/bin/bash
cat << EOF
world
watching
CHINA
EOF
执行并输出结果
$ chmod +x ./test.sh #设置执行权限
$ ./test.sh #执行脚本
world
watching
CHINA
/dev/null 文件
如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null:
$ command > /dev/null