🎊专栏【玩转Linux操作】
🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。
🎆音乐分享【Love Story】
🥰大一同学小吉,欢迎并且感谢大家指出我的问题🥰
🍔函数
bash
中的函数类似于C/C++中的函数,但是return
的返回值与C/C++不同,返回的是exit code
,取值为0~255,0表示正常结束
如果想获取函数的输出结果,可以通过echo
输出到stdout
中,然后通过$(function_name)
来获取stdout中的结果
函数的return值可以通过$?
来获取
[function] func_name(){ # function关键字可以省略
语句1
语句2
...
}
⭐不获取return值和stdout值
#! /bin/bash
func() {
name=fufu
echo "Hello $name"
}
func
⭐获取return值和stdout值
不写
return
时,默认return 0
#! /bin/bash
func() {
name=fufu
echo "Hello $name"
return 123
}
output=$(func)
ret=$? #函数的return值可以通过 $? 来获取
echo "output = $output"
echo "return = $ret"
🌺函数的输入参数
在函数中,$1
表示第一个输入参数,$2
表示第二个输入参数,以此类推
函数里面的
$0
是文件名,而不是函数名
#! /bin/bash
func() { # 递归计算 $1 + ($1 - 1) + ($1 - 2) + ... + 0
word=""
while [ "${word}" != 'y' ] && [ "${word}" != 'n' ]
do
read -p "要进入func($1)函数吗?请输入y/n:" word
done
if [ "$word" == 'n' ]
then
echo 0
return 0
fi
if [ $1 -le 0 ]
then
echo 0
return 0
fi
sum=$(func $(expr $1 - 1))
echo $(expr $sum + $1)
}
echo $(func 10)
🌺函数的局部变量
可以在函数里面定义局部变量,作用范围仅在当前函数里面
可以在递归函数中定义局部变量
local 变量名=变量值
例如
#! /bin/bash
func() {
local name=fufu
echo $name
}
func
echo $name
🍔exit命令
-
exit
命令用来退出当前shell
进程,并返回一个退出状态,所以$?可以接收这个退出状态 -
exit
命令可以接受一个整数值作为参数,代表退出状态。如果不指定,默认状态值为0 -
exit
退出状态
⭐示例
创建脚本abc.sh
#! /bin/bash
if [ $# -ne 1 ] # 如果传入参数个数等于1,则正常退出;否则非正常退出。
then
echo "arguments not valid"
exit 1
else
echo "arguments valid"
exit 0
fi
🍔文件重定向
每个进程默认打开3个文件描述符
-
stdin
标准输入,从命令行读取数据,文件描述符为0 -
stdout
标准输出,向命令行输出数据,文件描述符为1 -
stderr
标准错误输出,向命令行输出数据,文件描述符为2
可以用文件重定向将这三个文件重定向到其他文件中
重定向命令列表
命令 | 说明 |
---|---|
command > file |
将stdout 重定向到file 中 |
command < file |
将stdin 重定向到file 中 |
command >> file |
将stdout 以追加方式重定向到file 中 |
command n > file |
将文件描述符n 重定向到file 中 |
command n >> file |
将文件描述符n 以追加方式重定向到file 中 |
⭐示例
输入和输出重定向
echo -e "Hello \c" > output.txt # 将stdout重定向到output.txt中
echo "World" >> output.txt # 将字符串追加到output.txt中
read str < output.txt # 从output.txt中读取字符串
echo $str # 输出结果:Hello World
同时重定向stdin和stdout
创建bash脚本
#! /bin/bash
read a
read b
echo $(expr "$a" + "$b")
创建input.txt,里面的内容为:
3
4
执行命令
./test.sh < input.txt > output.txt
从input.txt中读取内容,将输出写入output.txt中
🍔引入外部脚本
类似于C/C++的include
操作,bash
也可以引入其他文件中的代码
. filename #注意文件和点之间有一个空格
或者
source filename
⭐示例
创建test1.sh
,内容为
#! /bin/bash
name=fufu #定义变量
然后创建test2.sh
,内容为
#! /bin/bash
source test1.sh # 或 . test1.sh
echo My name is: $name # 可以使用test1.sh中的变量
文章来源:https://www.toymoban.com/news/detail-528336.html
🥰如果大家有不明白的地方,或者文章有问题,欢迎大家在评论区讨论,指正🥰文章来源地址https://www.toymoban.com/news/detail-528336.html
到了这里,关于【玩转Linux操作】详细讲解Shell的函数,exit,文件重定向,引入外部脚本的操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!