设为首页 加入收藏

TOP

Shell编程基础进阶
2018-11-24 22:08:35 】 浏览:21
Tags:Shell 编程 基础 进阶

交互式shell
非交互式shell
登录式shell


非登录式shell


1、 bash script-name 或 sh script-name (生成一个子shell执行)


2、 path/script-name 或 ./script-name (添加执行权限执行,默认根据脚本第一行指定的解释器执行,如果没有指定则以当前默认shell解释器执行)


3、 source script-name 或 . script-name (以当前默认shell解释器执行)


4、cat script-name |bash


产生子shell的情况


1、在父shell中执行一个shell脚本
bash ,执行环境不同,不能直接引用父shell变量,需export,定义的变量不能被父shell引用


2、在父shell中执行一条命令,在命令的末尾加上&
& ,执行环境相同,直接引用父shell变量,定义的变量不能被父shell引用
STR0='123';STR0='abc' &
echo $STR0


3、在父shell中执行一条命令,使用 () 中执行
(),执行环境相同,直接引用父shell变量,定义的变量不能被父shell引用
[root@web01 shell_class_03]# STR2='123' && (STR2='abc') && echo $STR2
123


4、在父shell中执行带管道的命令
管道,执行环境相同,直接引用父shell变量,定义的变量不能被父shell引用
[root@web01 shell_class_03]# STR1='123';echo 111 |STR1='ABC';echo $STR1
123


? 匹配任意一个字符
[] 匹配括号中任意一个字符a-z,0-9,A-Z,a-Z
() 在子 shell 中执行(cd /boot;ls) (umask 077; touch file1000)
{} 集合 touch file{1..9}


shell模式匹配
使用shopt 内置命令启用shell选项 (extglob) 则会识别几个扩展模式匹配运算符。
模式列表是由 | 分割


查看shell选项 extglob


启动shell选项 extglob


关闭shell选项 extglob


关于$


关于``


关于!


格式:


参数:


空命令


参数 : shell命令


信号


jumpserver.sh


expect-copy-sshkey.exp


cat dis-sshkey.sh


/etc/init.d


指定脚本解释器


单行注释 #
多行注释


主脚本
模块(子脚本)


1.定义变量变量名=变量值 ,不允许数字命名, 不能使用横岗命名
2.引用变量$变量名 或 ${变量名}
3.查看变量echo $变量名 set显示所有变量,包括自定义变量和环境变量


系统环境变量
1.定义环境变量 export export 变量 ,将自定义变量转换成环境变量
2.引用环境变量 $变量名 或 ${变量名}
3.查看环境变量 echo $变量名 env |grep Name
4.取消环境变量 unset 变量名
5.作用范围在当前shell和子shell有效


$1
$2
$3


预先定义变量
$0 脚本文件名
$* 所有的参数
$@ 所有的参数


$# 参数的个数
$$ 当前进程的 PID
$! 上一个后台进程的 PID
$? 上一个命令的返回值 0 表示成功


变量赋值方式


变量长度


从前往后删除变量内容


从后往前删除变量内容


索引及切片


变量内容替换


变量替代


自增/自减
ping.sh


[ ]
[[ ]]
(( )) 仅用于整数


https://www.gnu.org/software/bc/manual/html_mono/bc.html


顺序 选择 循环


算术运算
逻辑运算
Linux命令


流程图


IFS


把a.txt文件中的内容倒腾到b.txt文件中


cat a.txt
1
2
3
4
5
6
7
8
9
10


cat b.txt
10
9
8
7
6
5
4
3
2


while read


while读取文件三种方式


break n 表示跳出循环的层数


continue
continue n 退到第n层继续循环


select


$1
$2
$3
$#
$*


函数调用


系统函数库


action函数


普通数组(索引数组)


关联数组的下标是字符串


找出一个网络中最大的空闲ip地址段


抓阄



编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇OpenCV操作像素深入理解 下一篇Visual Studio 2017中使用SourceL..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(214) }