zoukankan      html  css  js  c++  java
  • Shell脚本(二)

    摘自:菜鸟教程 http://www.runoob.com/linux/linux-shell-passing-arguments.html

    关于SGID/SUID的内容摘自:http://blog.csdn.net/xiaocainiaoshangxiao/article/details/17378611

    1. Shell传递参数

    ./test.sh 1 2 3

    1)获取第n个参数:$n,其中$0为执行的文件名

    echo $0 输出:test.sh

    2)参数个数:$#

    echo $# 输出:3

    3)以一个字符串显示所有参数:$*

    “$*” 表示:"1 2 3"

    4)与$*相同,但加双引号时返回不同:$@

    "$@" 表示:"1" "2" "3"

    5)脚本运行的当前进程号:$$

    如:10786

    6)后台运行的最后一个进程号:$!

    7)显示Shell使用的当前选项:$-,同set命令

    8)显示最后命令的退出状态:$?

    0表示没有错误,其他表示有错误

    2. Shell基本运算符

    expr 是一款表达式计算工具,使用它能完成表达式的求值操作。如:

    val=`expr 2+2` 结果:4

    算数运算符

    +:加

    -:减

    *:乘,注意表达式中*需要做转义,如`expr a * b`

    /:除

    %:取余

    =:赋值,如a=$b

    ==:判断是否相等,如[ $a==$b ]

    !=:判断是否不等,如[ $a!=$b ],注意条件表达式与中括号之间一定要有空格

    关系运算符

    只支持数字,不支持字符串

    -eq:是否相等

    -ne:是否不想等

    -gt:左边是否大于右边

    -lt:左边是否小于右边

    -ge:左边是否大于等于右边

    -le:左边是否小于等于右边

    布尔运算符

    !:非运算

    -o:或运算

    -a:与运算

    逻辑运算符

    a=10,b=20

    &&:逻辑与,如[[ $a -lt 100 && $b -gt 100 ]],返回false

    ||:逻辑或,如[[ $a -lt 100 || $b -gt 100 ]],返回true

    字符串运算符:

    a="abc", b="efg"

    =:字符串是否相等,如[ $a = $b ]返回true

    !=:是否不相等,如[ $a != $b ]返回false

    -z:长度是否为0,如[ -z $a ]返回false

    -n:长度是否不为0,如[ -n $a ]返回true

    str:是否为空,如[ $a ]返回false

    文件测试运算符:

    -b file:文件是否是块设备文件

    -c file:是否是字符设备文件

    -d file:是否是目录

    -f file:是否是普通文件

    -g file:是否设置了SGID位(SGID即Set GID的缩写,它出现在文件所属组权限的执行位上面,它对普通二进制文件和目录都有效。当它作用于普通文件时,和SUID类似,在执行该文件时,用户将获得该文件所属组的权限。当SGID作用于目录时,意义就非常重大了。当用户对某一目录有写和执行权限时,该用户就可以在该目录下建立文件,如果该目录用 SGID修饰,则该用户在这个目录下建立的文件都是属于这个目录所属的组。)

    -k file:是否设置了粘着位(普通文件的sticky位会被linux内核忽略,目录的sticky位表示这个目录里的文件只能被owner和root删除)

    -p file:是否是有名管道(管道:http://mt.sohu.com/20161122/n473787762.shtml)

    -u file:是否设置了SUID位(SUID是Set UID的简称,翻译过来是设置用户ID,感觉很别扭,还是觉得SUID最为简炼。它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。)

    -r file:是否可读

    -w file:是否可写

    -x  file:是否可执行

    -s file:是否为空(文件大小是否大于0)

    -e file:是否存在

  • 相关阅读:
    Uri编码,包括javascript前端与C#服务器端
    快速排序
    bootstrap
    boosting
    bagging
    SHELL排序
    冒泡排序
    插入排序
    选择排序
    二叉树的数学性质
  • 原文地址:https://www.cnblogs.com/workingdiary/p/6806612.html
Copyright © 2011-2022 走看看