1. #!(shebang) shell脚本文件第一行的前两个字符。#!后必须是解释程序的绝对路径。
2.#注释标识符。
3.在运行一个shell脚本之前要确保shell脚本文件具有可执行权限,否则会“permission denied”。
例:chmod u+x /.a.sh
4.bash中的参数扩展
字符“$”会引导参数扩展。
基本的参数扩展:
$参数
${参数} 注意:参数名是大小写敏感的。
间接参数扩展:
${!参数}
大小写修改
${参数^}
${参数^^}
${参数,}
${参数,,}
${参数~}
${参数~~}
操作符“^”将参数值得第一个字符改为大写,操作符“,”将参数值的第一个字符改为小写。
当使用双重模式(^^或,,)时,所有的字符都被转换。
变量名扩展
${!前缀*}
${!前缀@}
字符串移除:
${参数#模式}//开头匹配
${参数##模式}//开头匹配
${参数%模式}//末尾匹配
${参数%%模式}//末尾匹配
操作符“#”和“%”表示将移除匹配指定模式的最短文本,而操作“##”和“%%”表示移除匹配指定模式的最长文本。
字符串搜索与替换:
${参数/模式/字符串}
${参数//模式/字符串}
${参数/模式}
${参数//模式}
操作符“/”表示只替换一个匹配的字符串,而操作符“//”表示替换所有匹配的字符串。,如果没有指定替换字符串STRING,那么匹配的内容将被替换为空字符串,即被删除。
求字符串长度:
${#参数}
字符串扩展
${参数:OFFSET}
${参数:OFFSET:LENGTH}
使用默认值
${参数:-WORD} 如果参数为未定义,或为null时,这种模式会扩展WORD,否则将扩展参数。
${参数-WORD} 只有参数未定义是,才会使用WORD。
指定默认值:
${参数:=WORD}
${参数=WORD}
这种模式与使用默认值的模式类似,但其区别在于此种模式不仅扩展了WORD,还将WORD赋值给参数,作为参数的值。
使用替代值:
${参数:+WORD}
${参数+WORD}
如果参数是未定义的,或者其值为空时,这种模式将不扩展任何内容。
如果参数是定义的,且其值不为空,这种模式将扩展WORD,而不是扩展参数的值。