shell 中变量的替换

Tag: Linux Shell 
Posted on 2020-07-22

条件变量替换: 

Bash Shell可以进行变量的条件替换,既只有某种条件发生时才进行替换,替换条件放在{}中


(1) ${value:-word}

当变量未定义或者值为空时,返回值为word的内容,否则返回变量的值


(2) ${value:=word}

与前者类似,只是若变量未定义或者值为空时,在返回word的值的同时将word赋值给value


(3) ${value:?message}

若变量以赋值的话,正常替换.否则将消息message送到标准错误输出(若此替换出现在Shell程序中,那么该程序将终止运行)


(4) ${value:+word}

若变量以赋值的话,其值才用word替换,否则不进行任何替换


(5) ${value:offset}

${value:offset:length}

从变量中提取子串,这里offset和length可以是算术表达式


(6) ${#value}

变量的字符个数 (变量的字符个数,并不是变量个数)


(7) ${value#pattern}

${value##pattern}

去掉value中与pattern相匹配的部分,条件是value的开头与pattern相匹配

#与##的区别在于一个是最短匹配模式,一个是最长匹配模式


(8) ${value%pattern}

${value%%pattern}

于(7)类似,只是是从value的尾部于pattern相匹配,%与%%的区别与#与##一样


(9) ${value/pattern/string}

${value//pattern/string}

进行变量内容的替换,把与pattern匹配的部分替换为string的内容,/与//的区别与上同

注意:上述条件变量替换中,除(2)外,其余均不影响变量本身的值


Bash内建参数

===========

PPID : 该bash的呼叫者process ID.

PWD : 目前的工作目录。

OLDPWD : 上一个工作目录。

REPLY : 当read命令没有参数时,直接设在REPLY上。

UID : User ID。

EUID : Effective User ID。

BASH : Bash的完整路径。

BASH_VERSION : Bash版本。

SHLVL : 每次有Bash执行时,数字加一。

RANDOM : 每次这个参数被用到时,就会产生一个乱数在RANDOM上。

SECONDS : 从这个Shell一开始启动後的时间。

LINENO : Script的行数。

HISTCMD : 历史记录数。

OPTARG : getopts处理的最後一个选项参数。

OPTIND : 下一个要由getopts所处理的参数号码。

HOSTTYPE : 机器种类。

OSTYPE : 作业系统名称。

IFS : Internal Field Separator。

PATH : 命令搜寻路径。

PATH="/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:."

HOME : 目前使用者的home directory;

CDPATH : cd命令的搜寻路径。

ENV : 如果这个参数被设定,每次有shell script被执行时,将会执行它所设定的档名做为环境设定。

MAIL : 如果这个参数被设定,而且MAILPATH没有被设定,那麽有信件进来时,bash会通知使用者。

MAILCHECK : 设定多久时间检查邮件一次。

MAILPATH : 一串的邮件检查路径。

MAIL_WARNING : 如果有设定的话,邮件被读取後,将会显示讯息。

PS1 : 提示讯息设定,内定为"bash$ "。(请详见提示讯息一节。)

PS2 : 第二提示讯息设定,内定为"> "。

PS3 : select命令所使用的提示讯息。

PS4 : 执行追踪时用的提示讯息设定,内定为"+ "。

HISTSIZE : 命令历史记录量,内定为500。

HISTFILE : 历史记录档,内定~/.bash_history。

HISTFILESIZE : 历史记录档行数最大值,内定500。

OPTERR : 如果设为1,bash会显示getopts的错误。

PROMPT_COMMAND : 如果设定的话,该值会在每次执行命令前都显示。

IGNOREEOF : 将EOF值当成输入,内定为10。

TMOUT : 如果设为大於零,该值被解译为输入等待秒数。若无输入,当成没有输入。

FCEDIT : fc命令的内定编辑器。

FIGNORE : 请详见READLINE。

INPUTRC : readline的startup file,内定~/.inputrc

notify : 如果设定了,bash立即报告被终结的背景程式。

history_control, HISTCONTROL : history使用。

command_oriented_history : 存入多行指令。

glob_dot_filenames : 如果设定了,bash将会把"."包含入档案路径中。

allow_null_glob_expansion : 如果设定了,bash允许路径明称为null string。

histchars : history使用。

nolinks : 如果设定了,执行指令时,不会跟随symbolic links。

hostname_completion_file, HOSTFILE : 包含与/etc/hosts相同格式的档名。

noclobber : 如果设定了,Bash不会覆写任何由">"、">&"及"<>"所操作的档案。

auto_resume : 请见任务控制一节。

no_exit_on_failed_exec : 如果该值存在,非互动的shell不会因为exec失败而跳出。

cdable_vars : 如果启动,而cd命令找不到目录,可切换到参数形态指定的目录下。

 评论
张三
orz
李四
orz orz
李小四
orz orz orz
张小三
orz orz orz orz
  搜索
  Tags
全部   Ubuntu   Linux   Python   Windows   Shell   转发   字体   循环   js   KMS   MySQL   html   DNS   css   多线程   VSCode   Office   安装   WinSCP   字典   原创   多进程   反向代理   领带   截取字符   随机数   随机   重定向   远程调试   进程池   进度条   网卡   线程池   电源   生活   激活   浏览器   日志   数据库   venv   vbs   uuid   IP   iostat   import   GitHub   dpkg   DHCP   curl   crx   CPU   cloud-init   BBR   Apt   iptables   Kitsunebi   kvm   tc   subprocess   SSH   SoftEther   Set   samba   pyflakes   pip   Nginx   NextCloud   List   libreoffice   Adobe  
  功能
You can put anything you want inside of these side widgets. They are easy to use, and feature the new Bootstrap 4 card containers!