【shell学习4》》】系统化整理大纲
之前看的runnoob整理,细节太多也没有系统起来,昨天公交上看了一些视频,略作总结:
标题零:学习基础
//创建文件
touch testVar.sh
//vim编辑内容
#!/bin/bash
vari="hello"
var1="my"
var2="pat"
//运行的两种方式
方式一:
root@ubuntu:~/shell# sh testVar.sh
root@ubuntu:~/shell# echo $var1
结果(空):
方式二
root@ubuntu:~/shell# . ./testVar.sh
root@ubuntu:~/shell# echo $var1
结果:my
区别:通过pstree命令查看bash进程
sh启动会新建一条bash进程,本bash进程无法取到结果
选择:通常运行直接sh,脚本相互调用时使用. ./
也可传参解决
标题一:变量定义
分为系统变量和用户自定义变量
a、
root@ubuntu:~/shell# va=`pwd`
root@ubuntu:~/shell# echo $va
/root/shell
b、
root@ubuntu:~/shell# va2=$(ll)
root@ubuntu:~/shell# echo $va2
total 12 drwxr-xr-x 2 root root 4096 Jun 22 19:11 ./ drwx------ 4 root root 4096 Jun 22 19:11 ../ -rw-r--r-- 1 root root 46 Jun 22 19:09 testVar.sh
1、系统内置变量
$HOME(主目录)\$PWD(当前运行的目录)\$SHELL(当前的解释器)\$USER(当前用户)等等。
使用set命令查看(各个发行版本命令有所区别)
2、用户自定义变量
1、变量名=变量值(=号两边不能有空格)
2、变量名一般都大写
3、双引号与单引号区别,双引号会将空格脱意,单引号会将所有特殊字符脱意($失去作用)
4、unset 变量名 删除变量
5、readonly A=1 声明静态变量A,不能unset,值也无法被改变
6、export 变量名,将变量提升为全局变量,可供其它shell使用
7、上一条命令的值赋值给变量:
3、系统特殊变量
$? 表示上一个命令退出状态(返回值?并非输出)
$$ 表示当前进程编号
$0 表示当前脚本名称
$n 脚本中表示n位置的参数
内容:
#!/bin/bash
echo "param1 is $1"
echo "param2 is $2"
eg:
root@ubuntu:~/shell# sh testVar.sh aaa bbb
param1 is aaa
param2 is bbb
$# 表示变量个数,常用于循环(不常用)
$*、$@都表示参数列表(常用)
eg:
#!/bin/bash
echo "param1 is $1"
echo "param2 is $2"
echo '$* test'
echo $*
echo '$@ test'
echo $@
eg:
root@ubuntu:~/shell# sh testVar.sh aaa bbb
param1 is aaa
param2 is bbb
$* test
aaa bbb
$@ test
aaa bbb
eg:
!/bin/bash
echo "param1 is $1"
echo "param2 is $2"
echo '$* test'
echo $*
echo '$@ test'
echo $@
echo 'test for'
for X in $*
do
echo $X
done
eg:
root@ubuntu:~/shell# sh testVar.sh ccc ddd eee
param1 is ccc
param2 is ddd
$* test
ccc ddd eee
$@ test
ccc ddd eee
test for
ccc
ddd
eee
标题二:表达式与流程控制:
1、for
eg:
#!/bin/bash
for J in 1 2 3 4 5
do
echo $J
done
for J in 6 7 8 9 10;
do echo $J;
done
for J in {20..25};
do echo $J;
done
#!/bin/bash
for X in $*
do
echo $X
done
for((i=0;i<=5;i++))
do
echo $i
done
2、while
eg:
while [ 1 -gt 0 ]
do echo 11
done
while [ 1 -gt 0 ]; do echo 11; done
while (( 1<=1 )); do echo 11; done
root@ubuntu:~/shell# K=2
root@ubuntu:~/shell# while (( K<=10 )); do echo $K;let K++; done
3、case
eg:
#/bin/bash
MM=$1
case $MM in
tingting)
echo "to park"
;;
fangfang)
echo "to caffeBar"
;;
weiwei)
echo "to hotel"
;;
*)
echo "balabala~"
esac
root@ubuntu:~/shell# sh for.sh fangfang
to caffeBar
4、if
判断条件:
= 字符串对比
//数字
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
//其它
-r 有读的权限
-w 有写的权限
-x 有执行权限
-f 文件存在并且是个常规文件
-s 文件存在且不为空
-d 文件存在且是个目录
-b 文件存在并且是一个块设备
-L 文件存在且是一个链接
eg:
#/bin/bash
read -p "input you name :" NAME
if [ "$NAME" = "admin" ]
then
echo "1111"
elif [ "$NAME" = "root" ]
then
echo "2222"
else
echo "3333"
fi
//一般比对后面加一个x防止空
if [ "$basepath"x = "/usr/local/apache-tomcat-8.5.29"x ]
//条件满足后执行
[ condition ]&& echo ">>>>>>"
root@ubuntu:~/shell# [ 1 = 1 ]&&echo ">>"
>>
root@ubuntu:~/shell# [ "1" = "2" ]&&echo ">>"||echo "<<"
<<
标题三:运算符
格式 expr m + n 或 $((m+n))
eg(空格导致结果不同):
root@ubuntu:~/shell# S=`expr 1+2`
root@ubuntu:~/shell# echo $S
1+2
root@ubuntu:~/shell# S=`expr 1 + 2`
root@ubuntu:~/shell# echo $S
3
root@ubuntu:~/shell# S=$(((2+3)*4))
root@ubuntu:~/shell# echo $S
20
标题四:函数
三种声明方式
function fname(){}
function fname{}
fname(){}
返回值只能返回int(0-255)
返回值只能$?取
不能传参!
无返回值默认返回最后一句有效语句
先写后调用
标题五:调试
1\sh -vx aa.sh
2\脚本中添加 set -x
整理细节:
//线程等待
sleep 20
//展示所有进程
pstree
//显示系统中所有变量
set
//重新执行文件中所有export命令
source /etc/profile
//split字符串
root@ubuntu:~/shell# wc -c testVar.sh
46 testVar.sh
root@ubuntu:~/shell# wc -c testVar.sh | cut -d ' ' -f1
46
root@ubuntu:~/shell# wc -c testVar.sh | cut -d 'V' -f1
46 test
//引用变量
$PATH
//查看脚本的方法
echo $(截取语句)
//获取终端输入参数
read -p(提示语句) -m(字符个数) -t(等待时间)
root@ubuntu:~/shell# read -p "what is your name:" NAME
what is your name:asd
root@ubuntu:~/shell# echo $NAME
asd
【shell学习4》》】系统化整理大纲的更多相关文章
- (zhuan) 126 篇殿堂级深度学习论文分类整理 从入门到应用
126 篇殿堂级深度学习论文分类整理 从入门到应用 | 干货 雷锋网 作者: 三川 2017-03-02 18:40:00 查看源网址 阅读数:66 如果你有非常大的决心从事深度学习,又不想在这一行打 ...
- canvas学习之API整理笔记(二)
前面我整理过一篇文章canvas学习之API整理笔记(一),从这篇文章我们已经可以基本了解到常用绘图的API.简单的变换和动画.而本篇文章的主要内容包括高级动画.像素操作.性能优化等知识点,讲解每个知 ...
- 一份关于Swift语言学习资源的整理文件
一份关于Swift语言学习资源的整理文件 周银辉 在这里下载 https://github.com/ipader/SwiftGuide
- 【资源】C++学习资料 - 逆天整理 - 精华无密版【最新】
再失效就太无语了,链接都是多份的~~—————————————————基础——————————————C++环境搭建(全套)http://pan.baidu.com/s/1o6y0smY链接:http ...
- iOS学习笔记-精华整理
iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...
- iOS学习笔记总结整理
来源:http://mobile.51cto.com/iphone-386851_all.htm 学习IOS开发这对于一个初学者来说,是一件非常挠头的事情.其实学习IOS开发无外乎平时的积累与总结.下 ...
- shell学习总结之自定义函数
shell学习总结之自定义函数 Myfun (){ echo -n "now i is $i " ! [ "$i" ] && exit ; ec ...
- SHELL学习笔记----IF条件判断,判断条件
SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外. if list then do something here ...
- 学习ReactNative笔记整理一___JavaScript基础
学习ReactNative笔记整理一___JavaScript基础 ★★★笔记时间- 2017-1-9 ★★★ 前言: 现在跨平台是一个趋势,这样可以减少开发和维护的成本.第一次看是看的ReactNa ...
随机推荐
- EM 12c: OMS Failed to start After restarting the Repository Database or reboot of the server
原文地址:http://blog.csdn.net/wanghui5767260/article/details/39398449 更全面,更专业 EM 12c: OMS Failed to star ...
- zcelib - One cplusplus C++ crossplatform library use for develop server,similar to ACE.
zcelib - One cplusplus C++ crossplatform library use for develop server,similar to ACE.OS适配层,为了适应WIN ...
- Myeclipse2014 激活 (包括方法和工具)
课程要求Myeclipse做各种各样的实验,对,当各种插头井.突然Myeclipse提示:使用过期,你可知道按那些个插件收了多少挫折么,怎能刚安好就用不了.可是又不想buy,所以就上网找破解咯,当中发 ...
- Matlab随笔之判别分析
原文:Matlab随笔之判别分析 从概率论角度,判别分析是根据所给样本数据,对所给的未分类数据进行分类. 如下表,已知有t个样本数据,每个数据关于n个量化特征有一个值,又已知该样本数据的分类,据此,求 ...
- windows添加本地文件托管到新增github库
新增repositoy.登录gitHub,并点击“New Reposoitory” 写入名字 之后点击“create resposity” \ 按照上图中的步骤可以完成.以下为完成步骤. 2. 在本 ...
- 【转】postgresql 9.4 在linux环境的安装步骤详解
本文章来为各位介绍一篇关于postgresql 9.4 在linux环境的安装步骤详解,希望文章能够对各位新手朋友带来帮助的哦. 环境说明系统:centos 6.4 64位软件:postgresql ...
- CentOS 7.3 源码安装apache 2.4.16配置基于域名的虚拟主机
主配置文件末尾添加一条配置: [root@vm2 ~]# vim /usr/local/apache/conf/httpd.conf Include conf/vhosts.conf 在conf目录下 ...
- jquery li练习2-恢复链条
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...
- Wow6432Node
64 位版本 Windows 中的注册表分为 32 位注册表项和 64 位注册表项.许多 32 位注册表项与其相应的 64 位注册表项同名,反之亦然. 64 位版本 Windows 包含的默认 64 ...
- ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区 1 引言 1.1 读者定位 我们假设用户在阅读本指南前应已具备以下知识: · 熟悉W ...