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
#
本文介绍了Bash脚本的基础知识,包括变量类型、引用方式、环境变量设置、位置参数使用及输出重定向等核心概念,并通过实例演示了如何创建并运行简单的Bash脚本。
5316

被折叠的 条评论
为什么被折叠?



