shell 编程入门,知识点整理二、
大家好、今天接着介绍shell编程。
1.break,continue语句:
break[n] :可以指定跳出几层循环
continue:跳出本次循环
2.位置参数和特殊变量:
$0 :代表成名
$1, $2、、、代表程序后面的位置参数
$#:表示位置参数的个数。
#@,#* 表示位置参数列表 ,常用语for循环
$$ :当前进程号
$?:上一条命令的退出码
shift n :参数左移 原来的$1 到 $n 将丢弃,$0 不移动 ,不带参数的shift 相当于 shift 1
3.echo
echo [option] string
-e 解析转义字符
-n 不回车换行,echo默认最后跟一个换行
4.管道 |
可以通过管道把一个命令的输出传递给另一个命令做输入
例如:cat myfile | more
5.tee :把结果输出到标准输出,另一个副本输出到相应文件
例如:tee a.txt #执行该命令 系统会读取你输入的内容,并显示出来,另外存储到a.txt文件中
6.文件重定向
输出重定向:>
输入重定向:<
Linux 文件系统:0表示标准输入 ,1表示标准输出, 2表示标准错误
>> 追加
cmd < &fd #将文件描述符fd 作为标准输入
cmd > &fd #将文件描述符fd作为标准输出
cmd < &- 关闭标准输入
7.函数:
foo() { echo "Function foo is called"; } #函数体的左花括号 和命令之间必须有空格或者换行,若将最后一条命令和花括号写在一行,则命令末尾要加分号
echo "--start--"
foo #函数调用不用写花括号 传递参数是通过 $1、$2、、、这样来传递参数,return后面跟一个数字,则表示函数的exit status 退出码
echo "--end--"
#! /bin/sh
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 :
else
echo "$DIR donesn't exit, Creating it now..."
mkdir $$DIR > /dev/null 2>$1 #文件重定向 mkdir 如果创建文件不成功,则屏幕会显示错误信息,文件定向则将信息定向到别的地方, 而错误信息在从2里面存放,
输出到屏幕默认从标准输出读取,所以,错误先定位到标准输出里面
if [ $? -ne 0];then
echo "Cannot create directory $DIR"
exit 1
fi
fi
done
浙公网安备 33010602011771号