05_02_linux

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@bogon ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
环境变量中没有root

两种解决办法

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
#

































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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值