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

 

posted on 2019-10-07 16:13  心五口  阅读(184)  评论(0)    收藏  举报

导航