shell 常用知识汇总

这里整理了一份shell常用语法,方便复习。

  • $(cmd)只输出标准输入,如果命令执行错误,则无输出
  • $((expr))用于执行数学运算
  • $?返回上一条命令的执行结果

1.输入输出重定向

  • 标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可从其他文件或命令中输入。

  • 标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕。

  • 错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕。

  • 符号 作用 命令 < 文件 将文件作为命令的标准输入

    • 命令 << 分界符 从标准输入中读入,直到遇见分界符才停止
    • 命令 < 文件1 > 文件2 将文件1作为命令的标准输入并将标准输出到文件2
  • 符号 作用 命令 > 文件 将标准输出重定向到一个文件中(清空原有文件的数据)

    • 命令 2> 文件 将错误输出重定向到一个文件中(清空原有文件的数据)
    • 命令 >> 文件 将标准输出重定向到一个文件中(追加到原有内容的后面)
    • 命令 2>> 文件 将错误输出重定向到一个文件中(追加到原有内容的后面)
    • 命令 >> 文件 2>&1 或 命令 &>> 文件

2.常用的转移字符

  • 反斜杠(\):使反斜杠后面的一个变量变为单纯的字符串。
  • 单引号(''):转义其中所有的变量为单纯的字符串。
  • 双引号(""):保留其中的变量属性,不进行转义处理。
  • 反引号(``):把其中的命令执行后返回结果。

3.流程控制语句[if,else, for, while, case]:

# if/else: 
    if [[ condition ]]; then
        do some thing;
    elif [[ condition ]]; then
        do some thing;
    else
        do some thing;
    fi;
# for:
    for i in $(seq 10); do
        do some thing;
    done;   
# while:
    i=10;
    while [[ $i -gt 5 ]];do
        echo $i;
        ((i--));
    done;
# case:
    case $1 in
    start | begin)
        echo "start something"  
        ;;
    stop | end)
        echo "stop something"  
        ;;
    *)
        echo "Ignorant"  
        ;;
    esac

前台、后台任务:

  • & 标识将命令放入后台执行,不占用终端显示。
  • jobs 能看到所有前、后台命令。
  • ctrl + z 可以把任务转移到后台,并且暂停执行。
  • fg 将后台的命令调至前台。
  • bg 将一个后台的命令变成继续执行。

经验之谈:

  • 在过滤的时候会用到grep, 但是如果不忽略自身脚本继而执行某些(删除)命令,会把当前脚本杀掉。
    • ps aux|grep sqlpad|grep -v grep|grep -v 0|awk '{print2}'|xargs kill -9
  • 不想在终端看到命令的输出可以把输出重定向到/dev/null
    • cmd > /dev/null 2>&1 &
  • 启动脚本是一个'全新的环境', 这里面没有定义好的alias。环境变量,得提前在脚本中定义或给全目标路径。
    • 这里所谓的'全新的环境'不够严谨,其实和脚本启动后。执行的shell环境有关,这里没有加载用户的~/.bash_profile文件。
    • 具体的加载顺序可以参照网文

单元测试:

  • shUnit2是一个为bash shell脚本设计的xUnit类型的单元测试框,参考网文
    • 有个demo在publish/test, 部分接口有写单元测试

func_check_file:
-x 是否存在且可执行
-d 路径是否存在
-f 文件是否存在

参考网文:

"添加小柒老师,进群共同学习技术"

扫描上方二维码
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容