Shell中的特殊参数和shell字符串

1.特殊参数

$#	          获取脚本传参的个数
$* 和 $@	  表示参数列表中的所有参数
$?	          用来获取上一个命令的退出状态,或者上一个函数的返回值
${#str}	      获取字符串长度

1.

2.当位置参数数字大于9,要用括号括起来。

[kiosk@foundation60 ]$ echo \${1..15}
$1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15
[kiosk@foundation60 ]$ cat 02.sh 
#!/bin/bash
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14} ${15}
[kiosk@foundation60 ]$ sh 02.sh {a..z}
a b c d e f g h i j k l m n o

3.$0

获取脚本的名称及路径。若不带路径执行脚本,输出结果就是脚本的名字;若使用全路径执行脚本,输出结果就是全路径加上脚本的名字。

4.$#获取脚本传参的个数


5.$* 和 $@

$*和$@的区别:

在linux shell中,$*和$@都是表示参数列表中的所有参数

但是当$*$@被双引号(" ")包含时,"$*"会将所有的参数作为一个整体,以"$1 $2 $3 $4 ..."的形式输出所有的参数; "$@"会将各个参数分开,以"$1" "$2" "$3"...的形式输出所有参数

6.$?用来获取上一个命令的退出状态,或者上一个函数的返回值。

2.Shell字符串

1.${#str}获取字符串长度

2.字符串拼接

规则:
str1=$a$b                   #中间不能有空客
       
str2="$a $b"                #有"" 时,中间可以有间隔

str3="$a":"$b"              #可以加其他字符

str4="${a}xixi":"${b}haha"  #不加{}得话,解释器识别会出错

3.字符串的截取:

<1>从左边开始截取:

${string: start: length}

#string表示截取的字符串
#start表示开始截取的位置
#length表示截取的长度

<2>从右边截取:${string: 0-start :length}

如图:

<3>从指定位置截取:

1.截取右边字符串(遇到第一个匹配的字符就结束):${string#*chars}

   #string表示要截取的字符
   #chars是指的字符
   #*是通配符的一种,表示任意长度的字符串
   #*chars连起来使用的意思是:忽略左边的所有字符,直到遇见chars(chars不会截取)

2.直到最后一个指定字符再匹配结束,可以使用##:${string##*chars}

           

发布了77 篇原创文章 · 获赞 16 · 访问量 6329

猜你喜欢

转载自blog.csdn.net/qq_42806574/article/details/104265384