您的位置:首页 > 运维架构 > Shell

Linux Shell学习笔记

2014-04-09 13:00 211 查看
现在Linux登录后默认是使用bash,如果使用其他(一般也没有如果)shell,需要在脚本的一开始指明使用的是bash。应当在开始注明脚本使用的语言。

#!/bin/bash

shell特殊符号:

("")双引号:用于标记多个特殊符号,但是对$,\,`,!符号例外

  ('')单引号:作用同上,但是可以标记""所不能的特殊符号

  (``)反引号 一般用来执行命令

  (\)反斜杠:转义符号,用于标记单个特殊符号.

参数:

  $0 Linux命令名

  $n 命令行参数

  $* 由号码1开始的所有的命令行参数

  $@ 分别访问命令行参数

  $# 命令参数的个数

变量替换:

参数置换的变量,变量var

var=${para-word}

若存在para,var=para 否则,var=word

var=${para=word}

若存在para,var=para 否则,var=word,para=word

var={para?word}

若存在para,var=para 否则,显示word错误,并退出

var=${para+word}

若存在para,var=word 否则,-

基本语句
expr命令将把一个算术表达式作为参数,通常形式如下:

expr [数字] [操作符] [数字]

if - then - else

if command1

then

command2

command3

fi
条件语句test [ ],注意在[ 的后面和 ]符号的前面要有一个空格。

测试字符串间的关系

str1 = str2      当两个串有相同内容、长度时为真
str1 != str2      当串str1和str2不等时为真

-n str1        当串的长度大于0时为真(串非空)

-z str1        当串的长度为0时为真(空串)

str1         当串str1为非空时为真

测试两个整数之间的关系

int1 -eq int2    两数相等为真

int1 -ne int2    两数不等为真

int1 -gt int2    int1大于int2为真

int1 -ge int2    int1大于等于int2为真

int1 -lt int2    int1小于int2为真

int1 -le int2    int1小于等于int2为真

3>有关文件的测试

-r file     用户可读为真

   -w file     用户可写为真

-x file     用户可执行为真

   -f file     文件为正规文件为真

   -d file     文件为目录为真

   -c file     文件为字符特殊文件为真

   -b file     文件为块特殊文件为真

   -s file     文件大小非0时为真

   -t file     当文件描述符(默认为1)指定的设备为终端时为真

4>复杂的条件测试(and 、or 、not)

   -a         与

   -o        或

   !        非

空命令

Bsh中用 : 代表空命令,就是充个数,什么都不做

case语句
case value in

    pattem 1)

     command

     command;;

    pattem 2)

     command

     command;;

    ....

    pattem)

     command;

   esac

while 循环
while command

do

  command

  command

  … …

done

for语句的结构如下:
for variable in arg1 arg2 … argn

do

command

command

… …

done

实例:

1.打印1-100

#!/bin/sh
for i in `seq 1 100`
do
echo "$i"
done
2.求和 1-$1

#!/bin/bash
loop=0
#for i in `seq 1 $1`
for ((i=1;i<=$1;++i))
do
loop=`expr $loop + $i`
done
echo $loop


3.10的阶乘

#!/bin/sh

x_t=1
all=1
while [ $x_t -lt 11 ]
do
all=`expr $all \* $x_t`
echo "$all"
x_t=` expr $x_t + 1 `
done
echo "after is $all";


4.腾讯笔试
求ip_input中,出现次数最多的ip

ip_input

219.217.49.14
175.43.4.87
87.48.98.1
59.73.38.25
219.217.50.14
59.92.48.32
219.217.49.14
59.72.38.142
59.73.38.25
219.217.49.14
219.217.49.14
175.43.4.87
87.48.98.1
59.73.38.25
219.217.50.14
59.92.48.32
219.217.49.14
59.72.38.142
59.73.38.25
59.72.38.142
59.73.38.25
59.72.38.142
59.73.38.25
59.72.38.142
59.73.38.25
59.72.38.142
59.73.38.25
59.72.38.142
59.73.38.25
59.72.38.142
59.73.38.25
59.72.38.142
59.73.38.25
59.72.38.142
59.73.38.25
59.72.38.142
59.73.38.25
59.72.38.142
59.73.38.25
59.72.38.142
59.73.38.25
59.72.38.142
59.73.38.25
59.72.38.142
59.73.38.25
59.72.38.142
59.73.38.25
tecent.sh

#!/bin/sh
sort ip_input | uniq -c | sort -n| tail -1 | awk '{printf $2}'
5.目录下的文件,每行均是一个数字,求出其最大值

awk `{if($1>tmp){print $1;tmp=$1}} END {printf "max is %d\n", $tmp}`
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: