`命令`
进行扩展时,Bash先执行命令,并把该命令的标准输出中最后面的换行符删除,用结果取代命令替换
首先要明确$符号用在什么地方,使用在不同的地方,其所代表的定义也就不同。比如在bash里$符号表示当前用户为普通用户;在bash脚本里。$开头表示变量。
以下是一些特殊变量:
1、$# 表示参数个数。
2、$0 是脚本本身的名字。
3、$1 是传递给该shell脚本的第一个参数。
4、$2 是传递给该shell脚本的第二个参数。
5、$@ 表示所有参数,并且所有参数都是独立的。
6、$$ 是脚本运行的当前进程ID号。
7、$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误。
扩展资料
bash通常运行于命令行窗口中,并能执行用户直接输入的命令。Bash还能从文件中读取命令,这样的文件称为脚本。
和其他Unix shell 一样,它支持文件名替换(通配符匹配)、here文档、命令替换、变量,以及条件判断和循环遍历的结构控制语句。
包括关键字、语法在内的基本特性全部是从shell借鉴过来的。其他特性,例如历史命令,是从csh和ksh借鉴而来。总的来说,Bash虽然是一个满足POSIX规范的shell,但有很多扩展。
图片看不清楚。
PATH#*: 是指从变量PATH中删除:前面的所有字符
从我这个可以看出差别就是第一个:前面的被干掉了。
这个是我在linux上 man bash 查到的:
${parameter#word}
${parameter##word}
Remove matching prefix pattern. The word is expanded to produce a pattern just as in pathname expansion. If the pattern matches the
beginning of the value of parameter, then the result of the expansion is the expanded value of parameter with the shortest matching pat-
tern (the ‘‘#’’ case) or the longest matching pattern (the ‘‘##’’ case) deleted. If parameter is @ or *, the pattern removal operation
is applied to each positional parameter in turn, and the expansion is the resultant list. If parameter is an array variable subscripted
with @ or *, the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)