`
jzhua2006
  • 浏览: 300896 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Bash初探之基础知识

阅读更多

1:每个脚本开头均需配置,指向bash的链接
   #!/bin/bash

 

2:FUNCNAME[0]表示当前运行的方法名称。

3:awk
   在文件或字符串中基于指定规则来分解抽取信息,也可以基于指定的规则来输出数据。
   例如:
   awk -F: '{print $2}'
   表示:以':'分割,获取打印出的第2个信息。

   如果后面不带-F,则默认是以空格分隔。

4:exit $?
  
5:字符串比较
   -e file 文件 file 已经存在
   -f file 文件 file 是普通文件
   -s file 文件 file 大小不为零
   -d file 文件 file 是一个目录
   -r file 文件 file 对当前用户可以读取
   -w file 文件 file 对当前用户可以写入
   -x file 文件 file 对当前用户可以执行
   -g file 文件 file 的 GID 标志被设置
   -u file 文件 file 的 UID 标志被设置
   -O file 文件 file 是属于当前用户的
   -G file 文件 file 的组 ID 和当前用户相同

6:两个命令直接使用“ && ”表示并且,即执行前面的命令,同时执行后面的命令

7:定义function时。
   1) 局部变量定义:local
   2) 暂停当前进程多少豪秒:sleep 数字

 

8:shell调用java程序(见如下)

     export CLASSPATH="${javahome}/lib/tools.jar:${javahome}/jre/lib:/usr/local/bin/bin/memcached.jar:"
    local test=$(java com.jzh.operate.OperateMemcached "${memcached_ip}":"${memcached_port}" memcachedtest memcachedtest | awk '{print $1}')    

 

9:Memcached启动时指定IP配置

INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。 一般来说,在各个系统中均定义成为0值。

 

10:Linux系统环境变量在/etc/.profile文件中

 

11:BASH shell脚步在读取(properties)配置文件时,最好先进行dos2unix命令,将配置文件中的换行去除。

 

12:su 命令详解

      使用权限:所有使用者 
使用方式:su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
说明:变更为其他使用者的身份,除 root 外,需要键入该使用者的密码
参数:
-f 或 --fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh
-m -p 或 --preserve-environment 执行 su 时不改变环境变数
-c command 或 --command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
-s shell 或 --shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell
--help 显示说明文件
--version 显示版本资讯
- -l 或 --login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root

 

13:tee命令

      tee能将输入数据流同时双向输出到屏幕和文件
USER 欲变更的使用者帐号
ARG 传入新的 shell 参数

14:typeset

typeset用于设置变量属性,如大小写,宽度,左右对齐等都可以用typeset来控制, 当用typeset改变一个变量的属性时,这种改变是永久的

 

15:touch

更新文件的访问和修改时间。

 

16:1>/dev/null 2>&1

shell中可能经常能看到:>/dev/null 2>&1

命令的结果可以通过%>的形式来定义输出

/dev/null 代表空设备文件
> 代表重定向到哪里,例如:echo "123" > /home/123.txt
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr标准错误
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1

那么本文标题的语句:
1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
2>&1 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件

 

17:if的逻辑表达式

 逻辑非 !                   条件表达式的相反
if [ ! 表达式 ]
if [ ! -d $num ]                        如果不存在目录$num


    逻辑与 –a                    条件表达式的并列
if [ 表达式1  –a  表达式2 ]


    逻辑或 -o                    条件表达式的或
if [ 表达式1  –o 表达式2 ]

18:如何执行多重用户下命令,且得到返回值

如:su - oracle -c "echo \"startup;\" | sqlplus \"/as sysdba\"" | tee /tmp/start_instance.log

即:当前用户为root,切换至oracle用户下,同时执行sqlplus / as sysdba 中的startup命令。

 

19:shell脚本中包含另一个脚本文件的使用,见如下:

. 脚本文件名

 

20:" ' `含义

"":表示字符串。里面如果存在命令也不会执行

''  :同上

``:表示字符串。里面如果存在命令也会执行,且会返回执行结果。

 

21:在文件夹中搜索文件中包含的字符串

grep "字符串" * -R

 

22: usage使用

function usage
{
    echo "Usage:"
    echo "db_instance.sh [create|delete|start|stop]"
    echo "  create        create the instance"
    echo "  delete        delete the instance"
    echo "  start         start the instance"
    echo "  stop          stop the instance"
}

case $1 in
    create)
        create_instance
        exit $?
        ;;
    delete)
        delete_instance
        exit $?
        ;;
    start)
        start_instance
        exitcode=$?
        log INFO db_instance.sh "Start the instance,exit code:${exitcode}"
        exit ${exitcode}
        ;;
    stop)
        stop_instance
        exitcode=$?
        log INFO db_instance.sh "Stop the instance,exit code:${exitcode}"
        exit ${exitcode}
        ;;
    help)
        usage
        exit 0
        ;;
esac

usage

 

23:命令操作文件(sed、ed)

sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed 3.02

 

24:指定文件行数插入内容样例

line_no=`grep -n "^[ ]*include[ ]*\"types.cf\"" /etc/main.cf | awk -F: '{print $1}'`
  ((line_no+=1))
  expr_str="include \"OracleTypes.cf\""
  cat << HERE | ed /etc/main.cf 1>/dev/null 2>&1
$line_no
i
$expr_str
.
w
q
HERE

 

25:dos2unix

dos2unix filename : 把dos文件转换成unix文件,可以避免在unix下执行文件时空行报错。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics