zoukankan      html  css  js  c++  java
  • shell 杂烩

    内部变量

    linux中shell变量$#,$@,$0,$1,$2的含义解释:

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

    变量提取

    介绍下Shell中的${}、##和%%使用范例,本文给出了不同情况下得到的结果。
    假设定义了一个变量为:

    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
    

    记忆的方法为:

    ‘#’ 是去掉左边(键盘上#在 $ 的左边)
    ‘%’ 是去掉右边(键盘上% 在$ 的右边)
    单一符号是最小匹配;两个符号是最大匹配
    

    例如:

    ${file:0:5}:提取最左边的 5 个字节:/dir1
    ${file:5:5}:提取第 5 个字节右边的连续5个字节:/dir2
    也可以对变量值里的字符串作替换:
    ${file/dir/path}:将第一个dir 替换为path:/path1/dir2/dir3/my.file.txt
    ${file//dir/path}:将全部dir 替换为 path:/path1/path2/path3/my.file.txt
    

    //------------------------------------------------------------------------------------------------------

    1、执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出;

    2、一个shell中的系统环境变量怎样才会被复制到子shell中(用export定义的变量);

    3、一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回到父shell中)。

    4、不用export定义的变量只对该shell有效,对子shell是无效的。

    ---------------------------------------

    -d :判断制定的是否为目录
    -z:判断制定的变量是否存在值
    -f:判断制定的是否为文件
    -L:判断制定的是否为符号链接
    -r:判断制定的是否可读
    -s:判断存在的对象长度是否为0
    -w:判断制定的是否可写
    -x:判断存在的对象是否可以执行
    !:测试条件的否定符号
    这些文件操作很多时候给脚本编程带来方便,尤其是用在if条件语句中

  • 相关阅读:
    一个强悍的强制删除文件的批处理
    禁止用户使用QQ聊天工具
    《项目经理指导手册》附录2项目经理面试题
    《项目经理指导手册》 附录1每日站会评价表
    《项目经理指导手册》调研篇
    《项目经理指导手册》前言
    《项目经理指导手册》 会议篇
    从Log4j2今天的漏洞说起.
    Asp.Net将Excel数据导入Sql Server数据库的的例子
    Winform窗体程序输入法全角问题
  • 原文地址:https://www.cnblogs.com/thammer/p/14676003.html
Copyright © 2011-2022 走看看