1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| # 定义普通变量 只能由字母、数字、下划线组成,只能以字母或下划线开头 web_path=/home/wwwroot web_path='/home/wwwroot' web_path="/home/wwwroot" web_path=$(pwd) # 命令执行结果赋给变量
# awk输出 web_tpye=123web_tpye='ropon'web_tpye="ropon"web_tpye=`pwd` awk 'BEGIN {print "$test"}' $web_tpye $web_tpye$web_tpye $web_tpye awk 'BEGIN {print $test}' awk 'BEGIN {print '$test'}' 123 语法报错 awk 'BEGIN {print "'$test'"}' 123 roponropon ropon
# 特殊位置参数变量 # $0 获取当前执行shell脚本的文件名,如果执行脚本包含路径,那么就包含路径 # $n 获取当前执行shell脚本的第n个参数值,n=1...9 当n为0时表示脚本的文件名 n大于9 用${10...}表示 # $# 获取当前执行shell脚本接收参数的总个数 # $* 获取当前执行shell脚本所有参数,不加引号和$@相同 如果"$*" 表示将所有参数视为一个字符串 相当于"$1$2$3" # $@ 获取当前执行shell脚本所有参数,不加引号和$*相同 如果"$@" 表示将所有参数视为不同字符串 相当于"$1""$2""$3"
# dirname 获取脚本的路径 dirname /root/studyshell.sh # basename 获取脚本名字 basename /root/studyshell.sh
set -- 清除所有参数变量
set -- "My name" is Ropon echo $# echo $1 echo $2 echo $3
echo $* echo $@
echo "$*" echo "$@"
for i in $*; do echo $i; done for i in $@; do echo $i; done
for i in "$*"; do echo $i; done for i in "$@"; do echo $i; done 等价于 for i; do echo $i; done
$? 获取上一条指令执行状态返回值(0为成功,非零为失败) $$ 获取当前执行shell脚本的进程号 $! 获取上一个在后台工作的进程的进程号 $_ 获取在此之前执行的命令或脚本的最后一个参数
sed -n '2,4p' studyshell.sh #查看studyshell.sh 第2到4行代码
echo -n 不换行输出内容 -e 解析转义字符 \n 换行 \r 回车 \t tab \b 退格 \v 纵向tab
eval #语法 eval args eval "echo \$$#"
exec #语法 eval 命令参数 不创建子进程前提下,去执行指定命令,执行完成后该进程就终止
read
shift #使用shift语句使用所有位置参数依次想左移动一个位置 $#值也会自动减1直到0为止 echo $1 $2 [ $# -eq 2 ] && shift && echo $1
exit
shell变量子串 ${ropon}#返回$ropon的内容 ${#ropon}#返回$ropon内容的长度(按字符)也适用于特殊变量 ${ropon:offset}#返回在变量$ropon中,从位置offset之后开始提取子串到结尾 ${ropon:offset:length}#返回在变量$ropon中,从位置offset之后开始提取长度为length的子串 ${ropon#word}#返回在变量$ropon开头删除首次匹配word剩余的子串 ${ropon##word}#返回在变量$ropon开头删除匹配word多次剩余的子串 ${ropon%word}#返回在变量$ropon结尾删除首次匹配word剩余的子串 ${ropon%%word}#返回在变量$ropon结尾删除匹配word多次剩余的子串 ${ropon/pattern/string} #返回使用string代替第一个匹配的pattern(贪婪模式匹配) ${ropon//pattern/string} #返回使用string代替第所有匹配的pattern
ropon="abcABC123abcABCcaba" echo ${ropon#a*C}#123abcABCcaba echo ${ropon##a*C}#caba echo ${ropon%c*a}#abcABC123abcABC echo ${ropon%%c*a}#ab echo ${ropon/abc/11} #11ABC123abcABCcaba echo ${ropon//abc/11} #11ABC12311ABCcaba
shell特殊扩展变量 ${ropon:-word}#如果ropon变量值为空或未定义,则返回word字符串 ${ropon:=word} #如果ropon变量值为空或未定义,则返回word字符串,但位置变量和特殊变量不适用,与${ropon:-word}用法相同,只不过将word赋给ropon ${ropon:?word}#如果ropon变量值为空或未定义,则word字符串作为标准错误输出,否则输出该变量的值 ${ropon:+word}#如果ropon变量值为空或未定义,则什么都不做,否则wordp字符串替换变量值
|