前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux Shell学习简单小结(更新中……)

Linux Shell学习简单小结(更新中……)

作者头像
阳光岛主
发布2019-02-19 17:31:19
8440
发布2019-02-19 17:31:19
举报
文章被收录于专栏:米扑专栏米扑专栏米扑专栏

if-fi

#! /bin/bash # 删除文件 和 新建文件 file=readme function delFile(){ if [ -e ./$file ];then rm -f ./$file echo "del $file ..." fi } function addFile(){ if [ ! -f ./$file ];then touch $file echo "add $file ..." fi } delFile addFile

Result:

(没有readme文件)

[work shell]$ sh if_e.sh add readme ... [workshell]$ sh if_e.sh del readme ... add readme ...

===================================================

if-else-fi

#! /bin/bash echo "press y hello" read str if [ "$str" = "y" ] || [ "$str" = "Y" ];then echo "hello" else echo "bye.." fi;

Result:

[work shell]$ sh if.sh press y hello y hello [work shell]$ sh if.sh press y hello n bye..

===================================================

if-elif-else-if(函数传参1)

# !/bin/sh

type=1    # 1, 2, 3(a,abc,123)


function getVal(){
    echo "$1"
}


if [ "$type" == "1" ]; then
    for((i=0;i<4;i++))
    do
        eval getVal $i
    done
elif [ "$type" == "2" ]; then
    echo "type"
else
    echo "none"
fi

Result:

yanggang@barry$ ./param.sh 0 1 2

3

===================================================

if-elif-else-if(函数传参2)

# !/bin/sh

#type=1    # 1, 2, 3(a,abc,123)


function getVal(){
    echo "$1"
}

function inputVal(){
    if [ "$1" == "1" ]; then
        for((i=0;i<4;i++))
        do
            eval getVal $i
        done
    elif [ "$1" == "2" ]; then
        echo "type"
    else
        echo "none"
    fi
}

inputVal 1      # 1 is a param

Result:

yanggang@barry$ ./param.sh

0 1 2

3 ===================================================

case 条件

mysql 

#!/bin/bash

case "$1" in
    start)
        echo "mysql start..."
        /etc/init.d/mysqld start
        ;;
    stop)
        echo "mysql stop..."
        /etc/init.d/mysqld stop
        ;;
    restart)
        echo "mysql restart..."
        /etc/init.d/mysqld stop
        /etc/init.d/mysqld start
        ;;
esac

exit 0

httpd(apache)

#!/bin/bash

case "$1" in
    start)
        echo "apache start..."
        /etc/init.d/httpd start
        ;;
    stop)
        echo "apache stop..."
        /etc/init.d/httpd stop
        ;;
    restart)
        echo "apache restart..."
        /etc/init.d/httpd restart
        ;;
    status)
        echo "apache status"
        /etc/init.d/httpd status
        ;;
esac

exit 0

===================================================

awk 

#! /bin/bash # 统计type类型文件,总共含有多少行 type="*.h *.cpp" result="result.txt" # 统计函数 function cal_lines() { rm -f $result #删除文件 for file in `ls $type`; do wc -l $file >> $result #新建并追加统计行数到文件 done awk '{total+=$1} END {print total}' $result >> $result #awk累加第一列,相加结果为total } cal_lines #调用函数 cat $result #查看结果

Result: 

[work]$ sh cal_lines.sh ls: *.h: No such file or directory 91 test_performance_server.cpp 178 test_performance_ubclient1.cpp 230 test_performance_ubclient2_common_async.cpp 204 test_performance_ubclient2_common_block.cpp 206 test_performance_ubclient2_common_nonblock.cpp 191 test_performance_ubclient2_common_single_block.cpp 193 test_performance_ubclient2_common_single_nonblock.cpp 237 test_performance_ubclient2_nshead_async.cpp 220 test_performance_ubclient2_nshead_block.cpp 218 test_performance_ubclient2_nshead_nonblock.cpp 192 test_performance_ubclient2_nshead_single_block.cpp 192 test_performance_ubclient2_nshead_single_nonblock.cpp 2352 

===================================================

 linux实现两个文件内容相加(3种解法)

 a.txt(10行)     b.txt(9行)

 a.txt

 b.txt

解法一

awk 'NR==FNR{a[NR]=$1; b[NR]=$2} NR > FNR{print $1 + a[FNR], $2+b[FNR]}' a.txt b.txt

运行结果:

[work]$ sh cal_ab1.sh 1 83 1 77 0 128 24 195 1 130 68 227 5 132 197 233 9 146

--------------------------------------------------------------------------------------

解法二

paste a.txt b.txt > c.txt while read a b c d; do echo $((a+c)) $((b+d)) done < c.txt

运行结果:

[work]$ sh cal_ab2.sh 1 83 1 77 0 128 24 195 1 130 68 227 5 132 197 233 9 146 0 8

--------------------------------------------------------------------------------------

解法三

paste a.txt b.txt | awk '{print $1+$3 "/t" $2+$4}'

运行结果:

[work]$ sh cal_ab3.sh 1       83 1       77 0       128 24      195 1       130 68      227 5       132 197     233 9       146 0       8 

--------------------------------------------------------------------------------------

评析:

解法一,结果不准确,只输出了前9行

解法二,结果正确,但不够简洁

解法三,结果正确,简洁

===================================================

 while循环

# !/bin/sh

TOP_NUM=800
index=0


function url_down(){

while [ $index -le $TOP_NUM ]
    do
       echo $index
        index=`expr $index + 24`
done

}

url_down

运行结果:

yanggang@barry$ ./tmp.sh  0 24 48 72 96 120 144 168 192 216 240 264 288 312 336 360 384 408 432 456 480 504 528 552 576 600 624 648 672 696 720 744 768 792

 -------------------------------------------------------------------------------

参考拓展:

Linux Make(Makefile)由浅入深的学习与示例剖析

shell if语句 示例:文件或目录是否存在或有执行权限

linux实现两个文件内容相加

awk中NR与FNR

百度面试及总结4

shell基础知识

关于RANDOM 的例子

shell函数(传参)的使用

参考推荐: Linux Shell函数返回值

Linux 之 shell 比较运算符(推荐)

Linux Shell学习简单小结(推荐)

SHELL学习笔记----IF条件判断,判断条件

===================================================

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011年01月06日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档