SHELL编程(一)
- shell文件一般带后缀.sh
- shell文件第一行的#!/bin/bash不是必须的,#!/bin/bash是指此脚本使用/bin/bash来解释执行。#!是一个特殊的表示符,其后跟着解释此脚本的shell路径。如果一个脚本在第一行没有加上#!+shell路径这一行,那么,脚本会默认当前用户登录的shell,为脚本解释器。我们通常所用的shell都是bash,如果哪天登录到sh,再使用以上类型的脚本,就会有问题。因此,大家应该养成脚本首行加上#!+shell路径的习惯。
-
全路径 /root/shell/wc.sh执行会出现权限问题,可以通过添加权限chmod +x wc.sh来解决。有了权限也可以使用相对路径./wc.sh执行。(收回权限chmod -x)
-
使用sh命令执行脚本文件,可以没有chemod +x 添加权限,没有脚本文件第一行解释器#!/bin/bash;不使用sh命令,需要chemod +x 添加权限 且 脚本文件第一行解释器#!/bin/bash。脚本文件从上而下,一行行执行。
-
-x是debug模式。脚本文件第一行#!/bin/bash -x,或者使用sh命令执行sh -x wc.sh,执行结果中带“+”是编译的内容,不带“+”是编译执行的结果
-
静态变量:如RZ=meng RZ='meng' RZ="meng" (三种方式都行,等号两边不能出现空格) 动态变量 RZ=`meng`这里需要注意的是动态变量的取值最好是补全路径,不然容易出现找不到变量
变量RZZ不存在,所以空出一行;动态变量NAME的值找不到,可以使用echo $PATH来查看动态变量是否存在
-
传递参数
-
shell脚本只支持一维数组,以()表示,用空格分割,@和*都表示所有,数组从0开始,#表示个数
-
if判断,==两边需要添加空格
-
循环
-
分割
-
awk是行处理器, 依次对每一行进行处理,然后输出。命令形式 awk{},$0表示整个当前行,$1表示每行第一个字段,$2表示每行第二个字段,NR表示每行的字段,-F定义分隔符
-
send