• shell 变量


    变量

            A="a b c def"           # 将字符串复制给变量
            A=`cmd`                 # 将命令结果赋给变量
            A=$(cmd)                # 将命令结果赋给变量
            eval a=$$a             # 间接调用
            i=2&&echo $((i+3))      # 计算后打印新变量结果
            i=2&&echo $[i+3]        # 计算后打印新变量结果
            a=$((2>6?5:8))          # 判断两个值满足条件的赋值给变量
            $1  $2  $*              # 位置参数 *代表所有
            env                     # 查看环境变量
            env | grep "name"       # 查看定义的环境变量
            set                     # 查看环境变量和本地变量
            read name               # 输入变量
            readonly name           # 把name这个变量设置为只读变量,不允许再次设置
            readonly                # 查看系统存在的只读文件
            export name             # 变量name由本地升为环境
            export name="RedHat"    # 直接定义name为环境变量
            export Stat$nu=2222     # 变量引用变量赋值
            unset name              # 变量清除
            export -n name          # 去掉只读变量
            shift                   # 用于移动位置变量,调整位置变量,使$3的值赋给$2.$2的值赋予$1
            name + 0                # 将字符串转换为数字
    number " " # 将数字转换程字符串

    数组

                A=(a b c def)         # 将变量定义为数組
                ${#A[*]}              # 数组个数
                ${A[*]}               # 数组所有元素,大字符串
                ${A[@]}               # 数组所有元素,类似列表可迭代
                ${A[2]}               # 脚本的一个参数或数组第三位

    定义变量类型

                declare 或 typeset
                -r 只读(readonly一样)
                -i 整形
                -a 数组
                -f 函数
                -x export
                declare -i n=0

    系统变量

                $0   #  脚本启动名(包括路径)
                $n   #  第n个参数,n=1,2,…9
                $*   #  所有参数列表(不包括脚本本身)
                $@   #  所有参数列表(独立字符串)
                $#   #  参数个数(不包括脚本本身)
                $$   #  当前程式的PID
                $!   #  执行上一个指令的PID
                $?   #  执行上一个指令的返回值

    变量引用技巧

    ${name:+value}        # 如果设置了name,就把value显示,未设置则为空
    ${name:-value}        # 如果设置了name,就显示它,未设置就显示value
    ${name:?value}        # 未设置提示用户错误信息value 
    ${name:=value}        # 如未设置就把value设置并显示<写入本地中>
    ${#A}                 # 可得到变量中字节
    ${A:4:9}              # 取变量中第4位到后面9位
    ${A/www/http}         # 取变量并且替换每行第一个关键字
    ${A//www/http}        # 取变量并且全部替换每行关键字
    				
    定义了一个变量: file=/dir1/dir2/dir3/my.file.txt
    ${file#*/}     # 去掉第一条 / 及其左边的字串:dir1/dir2/dir3/my.file.txt
    ${file##*/}    # 去掉最后一条 / 及其左边的字串:my.file.txt
    ${file#*.}     # 去掉第一个 .  及其左边的字串:file.txt
    ${file##*.}    # 去掉最后一个 .  及其左边的字串:txt
    ${file%/*}     # 去掉最后条 / 及其右边的字串:/dir1/dir2/dir3
    ${file%%/*}    # 去掉第一条 / 及其右边的字串:(空值)
    ${file%.*}     # 去掉最后一个 .  及其右边的字串:/dir1/dir2/dir3/my.file
    ${file%%.*}    # 去掉第一个 .  及其右边的字串:/dir1/dir2/dir3/my
    #   # 是去掉左边(在键盘上 # 在 $ 之左边)
    #   % 是去掉右边(在键盘上 % 在 $ 之右边)
    #   单一符号是最小匹配﹔两个符号是最大匹配
    

      

  • 相关阅读:
    POJ 2584 T-Shirt Gumbo (二分图多重最大匹配)
    POJ 2584 T-Shirt Gumbo (二分图多重最大匹配)
    POJ 1904 King's Quest ★(强连通分量:可行完美匹配边)
    POJ 1904 King's Quest ★(强连通分量:可行完美匹配边)
    HDU 4638 Group ★(树状数组)
    HDU 4638 Group ★(树状数组)
    HDU 4632 Palindrome subsequence (区间DP)
    HDU 4632 Palindrome subsequence (区间DP)
    hdu2604 Queuing
    poj3757 Training little cats
  • 原文地址:https://www.cnblogs.com/sharesdk/p/8696060.html
Copyright © 2020-2023  润新知