shell基础学习总结(一) (r3笔记第63天)

关于shell也多多少少的写了不少文章了。在工作中shell的使用也是相当的普遍了,尤其是基础的学习。今天就简单的总结一下,希望对大家有所帮助。 -->查看局部/全局环境变量 printenv env set 查看进程对应的环境变量。比如我们想查看oracle中smon进程对于的环境变量,我们可以使用如下的方法查看。如果存在字符集的问题,这也是一个很不错的检查方式。

[ora11g@rac1  ~]$ ps -ef|grep smon
ora11g    9161  1  0 Nov22 ?         00:00:05 ora_smon_TEST01
ora11g   12012 11889  0 05:34 pts/0    00:00:00 grep  smon
[ora11g@rac1 ~]$ cat  /proc/9161/environ|tr '\0'  '\n'
HOSTNAME=rac1
TERM=vt100
SHELL=/bin/bash
HISTSIZE=1000
NLS_LANG=american_america.AL32UTF8
SSH_CLIENT=192.168.3.1  60262  22
SSH_TTY=/dev/pts/0
USER=ora11g
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
ORACLE_SID=TEST01
ORACLE_BASE=/u03/ora11g
MAIL=/var/spool/mail/ora11g
PATH=
PWD=/u01/ora11g
LANG=en_US.UTF-8
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
HISTCONTROL=ignoredups
SHLVL=1
HOME=/u01/ora11g
LOGNAME=ora11g
SSH_CONNECTION=192.168.3.1  60262 192.168.3.140 22
LESSOPEN=|/usr/bin/lesspipe.sh  %s
ORACLE_HOME=/u03/ora11g/product/11.2.0/dbhome_1
G_BROKEN_FILENAMES=1
_=/u03/ora11g/product/11.2.0/dbhome_1/bin/sqlplus
ORA_NET2_DESC=9,12
ORACLE_SPAWNED_PROCESS=1
SKGP_SPAWN_DIAG_PRE_FORK_TS=1416659723
SKGP_SPAWN_DIAG_POST_FORK_TS=1416659723
SKGP_HIDDEN_ARGS=<FATAL/S/SMON/x0/xC/x0/x139E6056/9139/9134/xB/xD/x1/x139E67A4/1416659723/1416659723>
0
SKGP_SPAWN_DIAG_PRE_EXEC_TS=1416659723

-->shell编程之控制结构if-else if-else大家对于编程是再熟悉不过,shell里面也是类似的格式,可能不同编程语言略有不同。

if-else的结构大体如下面所示,基本脱离不了如下的这些结构。

if command
    then 
Comamnds
fi
if command; then
 commands
fi
if command
then 
 Commands
else
 commands
fi
if command1
then
 command
elif commands
then
 more  commands
fi

-->shell编程之控制结构test 可以使用test命令来判断一个条件的情况。可以使用下面的形式来实现。

if test condition
then
 commands
fi
if [ condition ]
then
 commands
fi

-->shell编程之控制结构之循环 对于循环结构,可能不同的shell使实现上略有差异。但是如下的格式基本都能满足日常的编程。

#数字段形式
for i in {1..100}
do
if((i%4==0))
     then
        echo $i
  fi  
done
#使用shell命令作为循环体
for i in `seq 100`
do 
   if((i%4==0))
    then
        echo $i
  fi          
done

#c语言语法的循环
for((i=1;i<100;i++))
do
     if((i%4==0))
    then
        echo $i
        continue
     fi
done
#while循环
  #方括号实现 
i=1
while [ $i -lt 100  ]
do
    if(($i%4==0))
    then
        echo $i
    fi
     i=$(($i+1))
done  
 #双括号实现
i=1
while(($i<100))
do
    if(($i%4==0))
     then
        echo $i
    fi
     i=$(($i+1))
done

-->shell编程之数值比较 数值的比较,无非就是>,>=,<,<=,<>,=这几种形式。

N1 –eq n2 表示= N1 –ge n2 表示>= N1 –gt n2 表示> N1 –le n2 表示<= N1 –lt n2 表示< N1 –ne n2 表示<> [[ $N1 = $n2 ]]

-->shell编程之字符串比较

字符串的比较,可以使用如下的方式。相对于数字比较而言,需要使用两个双括号 str1 = str2 str1 != str2 str1 \< str2 检查str1是否比str2小 str1 \> str2 -n str1 检查str1的长度是否非0 -z str1 检查str1的长度是否为0

[[ $str1 = $str2 ]]

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2014-11-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java工会

java调用webservice接口的几种方法

3.9K4
来自专栏Jed的技术阶梯

zookeeper案例之4个逻辑思维训练小题目

1312
来自专栏Java学习网

Java Web Response对象的27个方法及状态码

response表示HttpServletResponse对象,主要将JSP容器处理后的结果传回到客户端。 ? 网络配图 1、void addCookie(...

4797
来自专栏与神兽党一起成长

jFinal路由解析源码分析

jFinal的路由解析是在JFinalFilter中做的,这个Filter也需要在web.xml中配置。JFinalFilter实现了javax.servlet...

1672
来自专栏hotqin888的专栏

tealeg/xlsx遇到读取空表格错误

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

1912
来自专栏JMCui

再学习之MyBatis.

一、框架基本介绍 1、概念 支持普通SQL查询、存储过程和高级映射,简化和实现了Java 数据持久化层的的开源框架,主要流行的原因在于他的简单性和易使用性。 2...

4908
来自专栏MasiMaro 的技术博文

ATL模板库中的OLEDB与ADO

上次将OLEDB的所有内容基本上都说完了,从之前的示例上来看OLEDB中有许多变量的定义,什么结果集对象、session对象、命令对象,还有各种缓冲等等,总体上...

1442
来自专栏开发技术

spring事务源码解析

  在spring jdbcTemplate 事务,各种诡异,包你醍醐灌顶!最后遗留了一个问题:spring是怎么样保证事务一致性的? 当然,spring事务内...

1131
来自专栏分布式系统进阶

KafkaController分析3-ControllerChannelManager

使用NetworkClient连接到broker node, 使用selector处理网络IO;

841
来自专栏一个会写诗的程序员的博客

ES6 + React 开发极小知识集教程(附:dva 创建项目过程讲解)Kotlin 开发者社区

不要用 var,而是用 const 和 let,分别表示常量和变量。不同于 var 的函数作用域,const 和 let 都是块级作用域。

1242

扫码关注云+社区

领取腾讯云代金券