文档章节

Linux Shell学习简单小结

Zero零_度
 Zero零_度
发布于 2015/04/08 17:50
字数 1126
阅读 91
收藏 3

shelllinuxperformancefunctionfile

if-fi

[cpp] view plaincopyprint?

  1. #! /bin/bash  

  2. # 删除文件 和 新建文件  

  3. file=readme  

  4. function delFile(){  

  5.     if [ -e ./$file ];then  

  6.         rm -f ./$file  

  7.         echo "del $file ..."  

  8.     fi  

  9. }  

  10. function addFile(){  

  11.     if [ ! -f ./$file ];then  

  12.         touch $file  

  13.         echo "add $file ..."  

  14.     fi  

  15. }  

  16. delFile  

  17. addFile  

#! /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

[cpp] view plaincopyprint?

  1. #! /bin/bash  

  2. echo "press y hello"  

  3. read str  

  4. if [ "$str" = "y" ] || [ "$str" = "Y" ];then  

  5.     echo "hello"  

  6. else  

  7.     echo "bye.."  

  8. 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)

[python] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. # !/bin/sh  

  2.   

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

  4.   

  5.   

  6. function getVal(){  

  7.     echo "$1"  

  8. }  

  9.   

  10.   

  11. if [ "$type" == "1" ]; then  

  12.     for((i=0;i<4;i++))  

  13.     do  

  14.         eval getVal $i  

  15.     done  

  16. elif [ "$type" == "2" ]; then  

  17.     echo "type"  

  18. else  

  19.     echo "none"  

  20. fi  

# !/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)

[python] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. # !/bin/sh  

  2.   

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

  4.   

  5.   

  6. function getVal(){  

  7.     echo "$1"  

  8. }  

  9.   

  10. function inputVal(){  

  11.     if [ "$1" == "1" ]; then  

  12.         for((i=0;i<4;i++))  

  13.         do  

  14.             eval getVal $i  

  15.         done  

  16.     elif [ "$1" == "2" ]; then  

  17.         echo "type"  

  18.     else  

  19.         echo "none"  

  20.     fi  

  21. }  

  22.   

  23. inputVal 1      # 1 is a param  

# !/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 

[python] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. #!/bin/bash  

  2.   

  3. case "$1" in  

  4.     start)  

  5.         echo "mysql start..."  

  6.         /etc/init.d/mysqld start  

  7.         ;;  

  8.     stop)  

  9.         echo "mysql stop..."  

  10.         /etc/init.d/mysqld stop  

  11.         ;;  

  12.     restart)  

  13.         echo "mysql restart..."  

  14.         /etc/init.d/mysqld stop  

  15.         /etc/init.d/mysqld start  

  16.         ;;  

  17. esac  

  18.   

  19. exit 0  

#!/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)

[python] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. #!/bin/bash  

  2.   

  3. case "$1" in  

  4.     start)  

  5.         echo "apache start..."  

  6.         /etc/init.d/httpd start  

  7.         ;;  

  8.     stop)  

  9.         echo "apache stop..."  

  10.         /etc/init.d/httpd stop  

  11.         ;;  

  12.     restart)  

  13.         echo "apache restart..."  

  14.         /etc/init.d/httpd restart  

  15.         ;;  

  16.     status)  

  17.         echo "apache status"  

  18.         /etc/init.d/httpd status  

  19.         ;;  

  20. esac  

  21.   

  22. exit 0  

#!/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 

[python] view plaincopyprint?

  1. #! /bin/bash  

  2. # 统计type类型文件,总共含有多少行  

  3. type="*.h *.cpp"  

  4. result="result.txt"  

  5. # 统计函数  

  6. function cal_lines()  

  7. {  

  8.     rm -f $result  #删除文件  

  9.     for file in `ls $type`; do  

  10.         wc -l $file >> $result #新建并追加统计行数到文件  

  11.     done     

  12.           

  13.     awk '{total+=$1} END {print total}' $result >> $result  #awk累加第一列,相加结果为total  

  14. }  

  15. cal_lines     #调用函数  

  16. cat $result   #查看结果  

#! /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

 

解法一

[python] view plaincopyprint?

  1. awk 'NR==FNR{a[NR]=$1; b[NR]=$2}   

  2. NR > FNR{print $1 + a[FNR], $2+b[FNR]}' 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

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

解法二

[python] view plaincopyprint?

  1. paste a.txt b.txt > c.txt  

  2. while read a b c d; do  

  3.     echo $((a+c))  $((b+d))  

  4. done < c.txt  

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

 

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

解法三

[python] view plaincopyprint?

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

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循环

[python] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. # !/bin/sh  

  2.   

  3. TOP_NUM=800  

  4. index=0  

  5.   

  6.   

  7. function url_down(){  

  8.   

  9. while [ $index -le $TOP_NUM ]  

  10.     do  

  11.        echo $index  

  12.         index=`expr $index + 24`  

  13. done  

  14.   

  15. }  

  16.   

  17. url_down  

# !/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

 

本文转载自:http://blog.csdn.net/ithomer/article/details/6120376

Zero零_度
粉丝 69
博文 1267
码字总数 263854
作品 0
程序员
私信 提问
Linux Shell学习简单小结(更新中……)

if-fi Result: (没有readme文件) [work shell]$ sh if_e.sh add readme ... [workshell]$ sh if_e.sh del readme ... add readme ... ===================================================......

长平狐
2013/01/06
113
0
SHELL学习笔记----IF条件判断,判断条件

前言: 无论什么编程语言都离不开条件判断。SHELL也不例外。 if list then do something here elif list then do another thing here else do something else here fi EX1: #!/bin/sh SYSTEM......

长平狐
2013/01/06
125
0
你的 Linux 环境设置如何管理

在 Linux 系统上的用户账户配置以多种方法简化了系统的使用。你可以运行命令,而不需要知道它们的位置。你可以重新使用先前运行的命令,而不用发愁系统是如何追踪到它们的。你可以查看你的电...

Linux就该这么学
06/12
27
0
学习编程技术的成长之路

只要有一本好书,有一个舞台,每一个人都可能成为大牛级的高手,希望大家通过我精心搜集的这些网站找到自己的兴趣爱好,以增强自己的信心。 众里寻他千百度,为了百度,为了梦想,我们一起分...

长平狐
2013/01/06
163
0
如何管理你的 Linux 环境变量

Linux 用户环境变量可以帮助你找到你需要的命令,无须了解系统如何配置的细节而完成大量工作。而这些设置来自哪里和如何被修改它们是另一个话题。 在 Linux 系统上的用户账户配置以多种方法简...

作者: Sandra Henry-stocker
05/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Go 关闭 channel 的 close 方法

在 Go 中我们所以 close() 来关闭一个 channel 官方的注释如下 The close built-in function closes a channel, which must be either bidirectional or send-only. It should be executed o......

mickelfeng
26分钟前
3
0
语音转文字什么方法比较简单

在很多时候一些比较重要的对话需要录制下来,在录制完成后还需要整理出文字,可是长时间的录音内容想要整理出文字是非常的麻烦的。需要花费大量的时间将录制的声音转换成文字,那么想要简单快...

401恶户
29分钟前
5
0
IIS7配置thinkphp5项目到public目录下

有个项目,tp5写的,要配置到项目的public目录下,一开始报错了...后面删除了配置,重新配置成功了,记录一下过程 1.首先,将网站根目录变为你的public目录下 2.添加解析程序的CGI,这里选择你需要解...

老bia同学
34分钟前
10
0
Redis主从复制的配置和实现原理

Redis的持久化功能在一定程度上保证了数据的安全性,即便是服务器宕机的情况下,也可以保证数据的丢失非常少。通常,为了避免服务的单点故障,会把数据复制到多个副本放在不同的服务器上,且...

TurboSanil
36分钟前
8
0
counsul 集群

1 master节点 cat << EOF > /lib/systemd/system/consul.service[Unit]Description=consul-masterAfter=network-online.target [Service]ExecStart=/bin/sh -c 'consul agent ......

拜了个拜
36分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部