zoukankan      html  css  js  c++  java
  • shell语法

    1. 数组

    #定义数组
    array=("163" "21cn" "sina" "qq")
    
    #获取数组长度
    echo ${#array[*]}
    
    #遍历数组
    for arr in ${array[*]}; do
      echo $arr
    done

    2. 转换大小写
    # 使用typeset后必须重新赋值才起作用
    
    typeset -u content #upper
    content="Show Me The Money"
    echo $content
    
    typeset -l content #lower
    content="Show Me The Money"
    echo $content
    
    # 使用tr
    content="Show Me The Money"
    new_content=`tr '[a-z]' '[A-Z]' <<< "$content"`
    echo $new_content
    
    new_content=`tr '[A-Z]' '[a-z]' <<< "$content"`
    echo $new_content
    
    content="Show Me The Money"
    new_content=$(echo "$content" | tr '[a-z]' '[A-Z]')
    echo $new_content
    
    new_content=$(echo "$content" | tr '[A-Z]' '[a-z]')
    echo $new_content


    3. 变量替换

    ${variable:-value}
    当variable为空时,替换为value
    
    ${variable:+value}
    当variable有值时,替换为value
    
    ${variable:=value}
    当variable为空时,替换并赋值为value
    
    ${variable:?message}
    当variable为空时,退出脚本,并标准错误输出message
    
    ${param#word}
    从param头部开始删除到word匹配的最小部分,然后返回剩余的部分
    ${param##word}
    从param头部开始删除到word匹配的最大部分,然后返回剩余的部分
    ${param%word}
    从param尾部开始删除到word匹配的最小部分,然后返回剩余的部分
    ${param%%word}
    从param尾部开始删除到word匹配的最大部分,然后返回剩余的部分
    
    file="/home/fdipzone/shell/command.class.sh"
    echo ${file#*/}  # home/fdipzone/shell/command.class.sh
    echo ${file##*/} # command.class.sh
    echo ${file%/*}  # /home/fdipzone/shell
    echo ${file%%/*} # 空
    echo ${file#*.}  # class.sh
    echo ${file##*.} # sh
    echo ${file%.*}  # /home/fdipzone/shell/command.class
    echo ${file%%.*} # /home/fdipzone/shell/command
    echo ${file/sh/php} # /home/fdipzone/phpell/command.class.sh
    echo ${file//sh/php} # /home/fdipzone/phpell/command.class.php 替换多个 

    4.调试脚本程序

    set -n #不执行脚本,只检查语法错误
    set -v #在执行命令之前回显
    set -x #在执行命令之后回显
    set -u #如果使用了未定义变量,给出错误提示。

    5.here文档
    在shell脚本中向命令输入的方法。

    cat <<!fdipzone!
    Hello Wolrd
    Shell Ok
    !fdipzone!

    6.参数变量
    $$ Shell本身的PID(ProcessID)
    $! Shell最后运行的后台Process的PID
    $? 最后运行的命令的结束代码(返回值)
    $- 使用Set命令设定的Flag一览
    $* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
    $@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
    $# 添加到Shell的参数个数
    $0 Shell本身的文件名
    $1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数

    7.文件路径与文件名
    #!/bin/bash
    
    echo "dirname:$(dirname $0)"
    
    echo "basename:$(basename $0)"
    
    exit 0

    8.读取输入数据
    #!/bin/bash
    
    # read命令 -p(提示语句) -n(字符最多个数) -t(等待时间) -s(不回显)
    
    TIMEOUT=5
    
    printf "Please input a number: "
    read -t "$TIMEOUT" number
    
    if [ "$number" ]; then
    	printf "number is: $number\n"
    else
    	printf "\nnot input number\n"
    fi
    
    read -s -n10 -p "Please input the password:" password
    printf "\nPassword is: $password\n"
    
    exit 0

    9.DEBUG
    #!/bin/bash
    
    DEBUG=true
    
    function debug(){
    	"$DEBUG" && echo $(tput setaf 1;)"DEBUG >>>"$(tput sgr0)" $*"
    }
    
    debug 'file not exists'
    
    exit 0

    10.打印使用说明
    #!/bin/bash
    
    function print_info(){
    
    cat <<!INFO!
    
    Usage: myscript <command>
    
    Version: $1
    
    Available Commands
    
      start:   start worker
    
      stop:    stop worker
    
      restart: restart worker
    
    !INFO!
    
    }
    
    print_info 1.0
    
    exit 0

    11.使打印字符串有颜色
    #!/bin/bash
    
    NORMAL=$(tput sgr0)
    GREEN=$(tput setaf 2; tput bold; tput setab 5)
    YELLOW=$(tput setaf 3; tput setab 4)
    RED=$(tput setaf 1)
    
    function red(){
    	echo "$RED$*$NORMAL"
    }
    
    function green(){
    	echo "$GREEN$*$NORMAL"
    }
    
    function yellow(){
    	echo "$YELLOW$*$NORMAL"
    }
    
    green "Task has been completed"
    
    red "The configuration file does not exist"
    
    yellow "You have to use higher version."
    
    exit 0


    12. 生成指定位数的随机密码 

    # 生成8位随机密码
    cat /dev/urandom | head -n 1 | md5sum | head -c 8
    
    date +%N | md5sum | head -c 8

    13. 截取字符串

    var='1234567890abcdefg'
    echo ${var:3:10} # 从字符串第3位开始截取,截取10个字符,输出4567890abc




  • 相关阅读:
    [WP8.1UI控件编程]SemanticZoom控件实现分组列表
    [深入浅出WP8.1(Runtime)]Toast通知
    [深入浅出WP8.1(Runtime)]生成图片和存储生成的图片文件
    [深入浅出WP8.1(Runtime)]应用文件的URI方案
    [深入浅出WP8.1(Runtime)]浮出控件(Flyout)
    [深入浅出WP8.1(Runtime)]文本框(TextBox)
    [深入浅出WP8.1(Runtime)]文本块(TextBlock)
    [深入浅出WP8.1(Runtime)]Windows Phone 8.1和Silverlight 8.1的区别
    [WP8.1UI控件编程]Windows Phone XAML页面的编译
    [WP8.1UI控件编程]Windows Phone大数据量网络图片列表的异步加载和内存优化
  • 原文地址:https://www.cnblogs.com/fdipzone/p/3715143.html
Copyright © 2011-2022 走看看