shell script

script执行方式的差异

source、sh script、./script

sh script或者直接执行脚本,是产生子程序,并在子程序内的bash进行执行,执行结束后变量或动作将结束而不会回传父程序

source则是在父程序内直接执行,所以在更改环境变量后一般使用source使更改后的环境变量生效

 

判断式

test指令测试功能
文件类型判断
参数    意义
-e    “文件名”是否存在
-f    “文件名”是否存在且为文件
-d    “文件名”是否存在且为目录
-b    “文件名”是否存在且为block device设备
-c    “文件名”是否存在且为character device设备
-S    “文件名”是否存在且为socket设备
-p    “文件名”是否存在且为FIFO(pipe)文件
-L    “文件名”是否存在且为链接文件
文件权限判断
参数    意义
-r    “文件名”是否存在且具有可读权限
-w    “文件名”是否存在且具有可写权限
-x    “文件名”是否存在且具有可执行权限
-u    “文件名”是否存在且具有SUID属性
-g    “文件名”是否存在且具有SGID属性
-k    “文件名”是否存在且具有sticky bit属性
-s    “文件名”是否存在且为非空白文件

两个文件的比较
参数    意义
-nt    file1比file2新(newer than)
-ot    file1比file2旧(older than)
-ef    两个文件是否为同一个文件(是否指向同一个inode,hard link)

两个整数的比较
参数    意义
-eq    x==y(equal)
-ne    x!=y(not equal)
-gt    x>y(greater than)
-lt    x<y(less than)
-ge    x>=y(greater than or equal)
-le
x<=y(less than or equal)
字符串数据的判断
参数    意义
test -z string    判断字符串是否为空字符串,为空则true,否则false
test -n string    判断字符串是否不为空字符串,不为空则true,否则false
test str1 == str2    判断两个字符串是否相等,相等则true,否则false
test str1 != str2    判断两个字符串是否不相等,不相等则true,否则false
多重条件判断
参数    意义
-a    条件同时成立
-o    条件之一成立
!    否,取反


判断符号[]
中括号以及运算符的两端都必须有空格符分割,例如 ◊代表空格[◊"$HOME"◊==◊"$MAIL"◊]
        在中括号 [] 内的每个元件都需要有空白键来分隔;
        在中括号内的变量,最好都以双引号括号起来;
        在中括号内的常数,最好都以单或双引号括号起来


shell script的默认变量($0 $1 $? $#)
脚本可以接收参数,默认变量参数如下
/path/to/script opt1 opt2 opt3 opt4
$0              $1   $2   $3   $4  
$#:脚本接收的参数个数,上例为4
$@:脚本接收的各个参数,上例为 "$1" "$2" "$3" "$4"
$*:脚本接收的所有参数,上例为 "$1 $2 $3 $4"
        
shift:参数变量偏移
shift [number],number为偏移量
 

条件判断

if [ 条件判断式 ]; then
        条件成立时的执行程序
fi

&&代表AND与
||代表or或

if [ 条件判断式 ]; then
        条件一成立时的执行程序
else
        条件二成立时的执行程序
else
        条件三成立时的执行程序
fi


case $变量内容 in
        "第一个变量内容")
                执行程序
                ;;
        "第二个变量内容")
                执行程序
                ;;
        ......
        "第N个变量内容")
                执行程序
                ;;
            *)                                                                                                                        ==其他变量内容
                执行程序
                ;;
esac

函数function
function 函数名() {
        执行程序
}

 

循环

注意[]里面跟条件要有一个空格
不定循环
while [ 条件 ] 
        do
                执行程序
        done

until [ 条件 ]
        do
                执行程序
        done


固定循环
for var in con1 con2 ...
        do
                执行程序
        done  


for((初始值;条件;循环))
        do
                执行程序
        done

 

shell script追踪与判断

sh [-nvx] script.sh
        -n:不执行sctipt,仅检查语法
        -v:执行script前将script内容输出到终端
        -x:将使用到的script内容显示到屏幕上
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值