fgrep:不支持的正则表达式
shell编程:
静态语言:编译型语言,事先编译成可执行文件,c,c++,JAVA,c#
动态语言:解释型语言,边解释边执行,PHP,SHELL,Python,perl
bash变量类型:环境变量,本地变量(局部变量),位置变量,特殊变量
引用变量:${NAME}或 $NAME
后面一个是单引号弱引用
[root@bogon ~]# NAME=Jerry
[root@bogon ~]# echo NAME
NAME
[root@bogon ~]# echo $NAME
Jerry
[root@bogon ~]# echo "I am $NAMES"
I am
[root@bogon ~]# echo "I am ${NAME}S"
I am JerryS
[root@bogon ~]# echo "I am $NAME"
I am Jerry
[root@bogon ~]# echo 'I am $NAME'
I am $NAME
[root@bogon ~]#
VARNAME=VALUE::作用域为整个bash进程
局部变量:
local VARNAME=VALUE::作用域为当前代码段
环境变量:作用域为当前shell进程及其子进程
export VARNAME=VALUE
脚本在执行时会启动一个子shell进程
命令行中启动的脚本会继承当前shell环境变量
非命令行启动就需要自我定义环境变量
[root@bogon ~]# export NAME
[root@bogon ~]# echo $NAME
Jerry
[root@bogon ~]# bash
[root@bogon ~]# echo $NAME
Jerry
位置变量:$1,$2,.....
特殊变量: $? 上一个命令的执行状态返回值
[root@bogon ~]# ls
anaconda-ks.cfg Downloads install.log.syslog Public sort.testes Templates Videos
Desktop file-2016-11-09-04-09-42.txt Music sort.test sort.testq test
Documents install.log Pictures sort.test sort.test q test4.txt
[root@bogon ~]# echo $?
0
[root@bogon ~]# ls /tmm
ls: cannot access /tmm: No such file or directory
[root@bogon ~]# echo $?
2
程序执行可能有两类返回值:
程序执行结果
程序返回代码(0-255)
0:执行正确
1-255:执行错误,1,2,127,系统预留
输出重定向:>,>>,2>,2>>,&>
/dev/null:软件模拟设备,bit bucket
[root@bogon ~]# id vergong
uid=500(vergong) gid=500(vergong) groups=500(vergong)
[root@bogon ~]# id vergong &> /dev/null
[root@bogon ~]# echo $?
0
unset VARNAME
查看当前shell中的变量:set
查看当前shell中的环境变量:prinfenv,env,export
[root@bogon ~]# ANIMALS=pig
[root@bogon ~]# ANIMALS=$ANIMALS:goat
[root@bogon ~]# echo $ANIMALS
pig:goat
[root@bogon ~]# ANIMALS=$ANIMALS:goat:sheep
[root@bogon ~]# echo $ANIMALS
pig:goat:goat:sheep
类似可以用来添加PATH路径
不支持运算
[root@bogon ~]# A=2
[root@bogon ~]# B=3
[root@bogon ~]# C=$A+$B
[root@bogon ~]# echo $C
2+3
脚本:命令的堆砌,有shell命令组成
shebang:
脚本必须脚本路径:#!/bin/bash
创建一个first文件
[root@bogon ~]# nano first.sh
更改权限:#!/bin/bash cat /etc/fstab ls /var
运行[root@bogon ~]# chmod +x first.sh
命令没有发现[root@bogon ~]# first.sh -bash: first.sh: command not found
查看当前目录路径
在查看当前环境变量路径[root@bogon ~]# pwd /root
环境变量中没有root[root@bogon ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
两种解决办法
1、给执行路径 (./为当前路径)
2、添加路径
[root@bogon ~]# ./first.sh # # /etc/fstab # Created by anaconda on Thu Nov 3 13:14:50 2016 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=1daf0ab1-0a3d-42bb-a3fe-2445916f0680 / ext4 defaults 1 1 UUID=17a45a65-fec4-4540-bf02-1404147375e2 /boot ext4 defaults 1 2 UUID=dce758ec-5e22-473a-adc3-b0c8c0bedfa4 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 account crash empty gdm local log nis preserve spool www cache db games lib lock mail opt run tmp yp
[root@bogon ~]# PATH=$PATH:/root You have new mail in /var/spool/mail/root [root@bogon ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root [root@bogon ~]# first.sh # # /etc/fstab # Created by anaconda on Thu Nov 3 13:14:50 2016 #