Beginning Linux Programming 02

shell 程序设计

管道和重定向

重定向输出

1
2
3
4
5
//把ls命令输出保存在文件lsoutput.txt文件中
$ ls -l > lsoutput.txt
// 用>>操作符把ps命令的输出内容附件到文件尾部
$ ps >> lsoutput.txt

shell 的语法

  • 变量: 字符串、数字、环境和参数
  • 条件: shell 中的bool值
  • 程序控制: if、elif、for、while、until、case
  • 命令列表
  • 函数
  • shell 内置命令
  • 获取命令的执行结果
  • here文档

变量

区分大小写,不需要声明,默认被看做字符串并以字符串存储。

条件

检查一个文件是否存在: test -f <filename>。
test 使用条件的类型归为3类: 字符串的比较、算术比较和文件相关的条件测试。

1
2
3
4
5
test condition/cmd ;then
...
else
...
fi

控制语句

  1. if 语句

    1
    2
    3
    4
    5
    6
    7
    if [[ condition ]]; then
    #statements
    elif [[ condition ]]; then
    #statements
    else
    #statements
    fi
  2. for 语句

    1
    2
    3
    for variable in value; do
    #statements
    done
  3. while

    1
    2
    3
    while [[ condition ]]; do
    #statements
    done
  4. until

    1
    2
    3
    until [[ condition ]]; do
    #statements
    done
  5. case

    1
    2
    3
    4
    case word in
    pattern )
    ;;
    esac
  6. 命令列表

    AND 列表

    1
    statements1 && statements2 && ...

    OR 列表

    1
    statements1 || statements2 || ...
  7. 语句块
    如:

    1
    2
    3
    4
    5
    6
    get_confirm && {
    grep -v "$cdcatnum" $tracks_file > $temp_file
    cat $temp_file > $tracks_file
    echo
    add_record_tracks
    }

函数

1
2
3
function_name () {
statements
}

命令

: 命令是一个空命令,相当于true

continue

. 在当前目录中执行

echo

eval:允许对参数进行求值

exec:将当前的shell替换为一个不同的程序

exit: 126文件不可执行/127命令未找到/128 出现一个信号

export: 将作为他参数的变量导出到子shell中,并使之在子shell中有效

expr: 将它的参数当做一个表达式来求值

printf: “format string” parameter1 parameter2 …

set: 为shell设置参数变量

shift: 左移参数

trap:指定在接收到信号后要采取的行动

unset: 从环境中删除变量或者函数

find: find / -mount -name test -print

find [path] [options] [tests] [actions]

grep: 使用一个选项、一个要匹配的模式和要搜索的文件

grep [options] PATTERN [FILES]

Powered by Hexo and Hexo-theme-hiker

Copyright © 2017 - 2017 非著名林峰 All Rights Reserved.

访客数 : | 访问量 :