• shell编程笔记


    今天学习了shell的if和function的用法,还是比较简单的。再次分享一下。

    1. function

    shell中的function 和c语言中的很像。

    function setconfig() {
    	read U
    	if [ -z $U ] ; then
    		echo "选择默认"
    		U=$2
    	fi
    	if [ -f $CONFIG_PATH/$1 ] ; then
    		echo "覆盖原$1"
    		rm $CONFIG_PATH/$1 > /dev/null 2>&1
    	fi
    	echo $U > $CONFIG_PATH/$1
    	chown root.root $CONFIG_PATH/$1
    	chmod 600 $CONFIG_PATH/$1
    }

    其中$1,$2就代表着所传参数,不用声明直接使用即可。

    2. if/test

    if [ EXP ] 与 if test EXP 是一个意思

    其中可以使用

    -z 表示如果为空

    -n 表示如果不为空

    例子:

    if [ -z $a ] ; then
        echo "$a是空的"
    fi

    其他相关的还有

    -g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真

    -h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效

    -k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真

    -p 当file存在并且是命令管道时返回为真

    -r 当由pathname指定的文件或目录存在并且可读时返回为真

    -s 当file存在文件大小大于0时返回真

    -u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真

    -w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。

    -o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。

    –b 当file存在并且是块文件时返回真

    -c 当file存在并且是字符文件时返回真

    -d 当pathname存在并且是一个目录时返回真

    -e 当pathname指定的文件或目录存在时返回真

    -f 当file存在并且是正规文件时返回真

    -e filename 如果 filename 存在,则为真 [ -e /var/log/syslog ]

    -d filename 如果 filename 为目录,则为真 [ -d /tmp/mydir ]

    -f filename 如果 filename 为常规文件,则为真 [ -f /usr/bin/grep ]

    -L filename 如果 filename 为符号链接,则为真 [ -L /usr/bin/grep ]

    -r filename 如果 filename 可读,则为真 [ -r /var/log/syslog ]

    -w filename 如果 filename 可写,则为真 [ -w /var/mytmp.txt ]

    -x filename 如果 filename 可执行,则为真 [ -L /usr/bin/grep ]

    shell 参数提取:


    USAGE="$0 -u chongzhi -p 123456 -e eth0 -s"
    while getopts :u:p:e:s OPTION ; do
    	case "$OPTION" in
    		u) user="$OPTARG" ;;
    		p) pass="$OPTARG" ;;
    		e) eth="$OPTARG" ;;
    		s) sflag=1 ;;
    		?) echo "$USAGE" ;
    		exit 1
    		;;
    	esac
    done
    
  • 相关阅读:
    Netty实现客户端和服务端通信简单例子
    上拉电阻的作用
    c语言常量指针赋值给变量指针导致警告
    修改ultisnips的默认键
    为debian8.2更换官方源
    linux下添加用户到sudo组
    用rfkill命令管理蓝牙和wifi
    用platformio编写arduino程序
    ubuntu下gcc-avr安装
    UNIX环境高级编程(第三版)关于apue.h的用法
  • 原文地址:https://www.cnblogs.com/TLightSky/p/2941456.html
Copyright © 2020-2023  润新知