特殊变量
本篇我们来了解Shell中函数相关的操作。
首先我们介绍一些特殊的变量,也就是在Shell(一)中提到的不能修改的变量。
$? 上一条命令的退出码
$0 相当于C语言main函数的中的命令行参数argv[0]
$1 $2 $n 位置参数,相当于C语言main函数中的命令行参数argv[1] argv[2] argv[n]
$# 相当于C语言main函数的argc - 1
$@ 表示参数列表
函数定义格式:
function 函数名()
{
命令
}
其中function
关键字可以省略
无参函数
代码示例:
#!/bin/bash
Printf()
{
echo "call func: "
printf "设置倒计时:"
read time
while [ $time -gt 0 ]
do
echo "$time"
let "time-=1"
done
}
Printf #调用
printf默认不换行,如果需要换行需要
\n
;echo输出后默认换行
运行结果:
带参函数
代码示例:
#!/bin/bash
is_directory()
{
DIR_NAME=$1
if [ ! -d $DIR_NAME ]; then
return 1
else
return 0
fi
}
for DIR in "$@"; do
if is_directory "$DIR"
then echo "$DIR is a directory ..."
else
echo "$DIR doesn't exist. Creating it now ..."
mkdir $DIR > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Cannot create directory $DIR ..."
exit 1
fi
fi
done
函数通过参数判断是否为目录,不是则创建,是则输出。注意函数返回0代表成功,返回1代表结果错误。> /dev/null 2>&1
表示将标准输出,标准错误都重定向到Linux的空设备文件中。
运行结果:
当目录存在时: