Linux Shell 编程笔记

 

#/bin/bash

1 、通配符

* :匹配任何字符和字符串,包括空字符串。

?:匹配任意一个字符。如:? abc 可以匹配任何以 abc 结束,以任意字符开关的四个字符的字符串。

[…] :匹配括号里列出的任何单字符。如 abd[def] 匹配以 abc 开头,以 def 中任意一个字符结尾的字符串。

2 、别名,自定义一个命令,作为其它命令的缩写,减少键盘输入。如:

alias list=’ls -l’

取消别名: unalias list

3 、给脚本添加可执行权限: chmod +x file.sh

4Shell 中的变量分为局部变量、环境变量、位置变量三种。

Shell 语言是解释性语言,对一个变量进行赋值时,就定义了变量。

程序的变量无数据类型,可以使用同一个变量存放不同数据类型的值。

变量赋值后,加一个 $ 访问变量的值。

赋值符号: =

没有空格的字符串的赋值,可以不用引号。

5 、环境变量,是一个用户的所有进程中都可以访问的变量。

使用 export 命令可以查看系统的环境变量列表。

环境变量的访问,需要在一个环境变量的前面加 $ 个符号。

定义一个环境变量:

export XX=1234

                                                 echo $XX

6 、位置变量,是 Shell 程序在运行时传入的参数。程序以变量的形式来调用这些参数,被存放到 1~99 个变量名中,被形象地称为位置变量。如

#!/bin/bash

#test.sh

echo $1

echo $2

执行: ./test.sh Beijing abcd

结果如下:

Beijing

abcd

7 、算术运算符: +-*/**%+=-=*=/=%=

8 、用 expr 改变运算顺序。如 echo `expr 1+2` ,结果: 1+2,    echo `expr 1 + 2`,结果:3

let 指示数学运算。 b=let 1+2 ,然后用 echo $b 输出 b 的值 3

$[] 表示数学运算。中括号中的内容将先进行数学运算。如 echo $[1+2]

9echo 命令可以输出文件或变量的值,是 Shell 中最常用的输出方式。可以输出到终端,或文件。

echo $str  # 输出到终端

echo $str >file  # 输出到文件 file 中,如果没有文件,会新建一个。如果已经存在,将覆盖以前的文件。如果是追加输出到文件,改用 >>

格式控制符: /c ,输出完毕不换行; /n ,输出一个换行; /t 输出一个跳格;

echo 后加 -e 选项,输出特殊字符。加 -n 可以禁止 echo 输出后的换行。

10read 命令读取信息

read 命令可以从键盘或文件读入信息,并赋给一个变量。

如果只读入一个变量,会把键盘上输入的所有信息赋值给这个变量, enter 键结束;如果读放多个变量,用空格键将输入的变量隔开。如果输入变量的个数多于需要读取变量的个数,将会把剩余的变量赋值给最后一个变量。在读取语句后添加 <filename ,表示从文件中读取数据,并且赋给变量。如 read A B <a.txt

11 、文件重定向:

cmd > filename: 把标准输出重定向到一个文件中

cmd >> filename: 把标准输出以追加的方式重定向到一个文件中

cmd 1 > filename: 把标准输出重定向到一个文件中

cmd >filename 2>&1: 把标准输出和标准错误一起重定向到一个文件中

cmd 2> filename: 把标准输出的错误得定向到一个文件中

cmd >>filename 2>&1 把标准输出和标准错误一起追加到一个文件中

cmd < filename1 > filename2:cmd 命令以 filename 文件为标准输入,以 filename2 文件作为标准输出

cmd < filename :把 cmd 命令以 filename 文件作为标准输入

例:将文件 a.txt 中的所有小写字母转换成大写字母,然后保存到文件 b.txt

tr ”[a-z]” “[A-Z]” < a.txt > b.txt

12 、双引号表示一个字符串。字符串中不能直接使用 $ 、引号、双引号、反斜线、反引号这些特殊字符。如果字符串中没有空格,使用双引号将赋值的字符串引起来,和不使用双引号效果是一样的。当字符串中有空格时,用双引号表示引号中的内容为一个字符串。

13 、反引号,反引号 ` 并不是单引号,而是 ”Tab” 键上面的那个符号。反引号用于执行引号中的系统命令,然后将命令的结果返回。

echo `date`

A=`ls`

echo $A

14 、反斜线,用于对特殊字符进行转义。 str=///%/*/&;echo $str

15 、文件状态测试

test –x a.txt   # 测试当前目录下的文件 a.txt 是否可以执行

-d 测试文件是否为目录文件

-s 是否非空

-f 是否是正规文件

-w 是否可写

-L 是否是符号连接

-x 是否可执行

-r 是否可读

-u 是否有 suid 位设置

16 、数值测试,指的是比较两个数值大小或相等关系。

test 命令:

test 第一个操作数 数值比较符 第二个操作数

 

用中括号代替 test 命令:

[ 第一个操作数 数值比较符 第二个操作数 ]

 

数值比较符:

-eq: 相等

-ne :不相等

-le :小于或等于

-ge :大于或等于

-gt :大于

-lt :小于

例:

test 3 –eq 5; 等价于 [ 3 –eq 5 ]

17 、字符串测试符:

= :两个字符串是否相等

!= :是否不相等

-z :是否是空字符串

-n :非空字符串

18 、逻辑测试符: -a 逻辑与; -o 逻辑或; ! 逻辑否。 [   -w a.txt –a –x a.txt ]; echo $?

19 、流程控制结构

if 语句:

if 条件

then cmd1

else cmd2

fi

 

if 条件 1

then cmd1

elif 条件 2

then cmd2

else cmd3

fi

 

for 语句:

for 变量名 in 列表

do

cmd1

cmd2…

done

例:

#!/bin/bash

# 9 * 9

for i in 1 2 3 4 5

do

for j in 1 2 3 4 5

do

    if [ $j –le $i ]

    then

    echo –e “$j/c”

    echo –e “*/c”

    echo –e “$i/c”

    echo –e “=/c”

    echo –e “$[ $i*$j ]   /c”

fi

done

echo “”

done

 

until 语句:

until 条件

do

cmd1

cmd2…

done

例:

#!/bin/bash

#1+2+…+100

sum=0

i=1

until [$i –gt 100]

do

     sum=$[$sum+$i]

     i=$[$i+1]

done

echo $sum

 

20、在后台执行命令

如果在命令行后面加上一个&符号,Shell就会在立即返回到提示符下,并在后台并行地执行该命令,而无需等待就可以启动下一下命令。后台作业在执行时的输出结果将被送到屏幕。

!变量包含提交给后台的最后一项作业的PID,可以用kill -9 $!杀死该后台进程。

jobs命令可以显示当前在后台中运行的作业。

fg %num可以将num数字指定的作业送到前台执行。如果没有指定数字,则将最近执行的后台作业送到前台执行。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值