在Shell中$
是一个特殊的字符,在不同场景中有不同的用法。
使用$
直接引用变量,包括循环变量。
1 | [email protected]:~# x=1 |
双引号"
括起来的字符串支持变量插值。
1 | [email protected]:~# x=1 |
使用${}
作为单词边界。
1 | [email protected]:/var/log/Nginx# x=1 |
使用${#}获取变量字符串长度。
1 | [email protected]:/var/log/Nginx# s=hello |
基于下标的引用方式,0表示shell脚本文件名,n从1开始表示第n个参数,第1个参数是$1。
1 | [email protected]:~# echo 'echo [email protected]:~# cat test.sh ' > test.sh |
注意,单引号1括起来的字符串不会进行插值。
使用2获取脚本或函数参数个数。
3 | 3 |
使用1 2 3
或"[email protected]"
以数组的形式引用参数列表。它们的区别在于使用双引号括起来用时,假设传入的参数为$*
,那么1的值为”1”、”2”、”3”三个变量,2的值为”1 2 3”一个变量。
test.sh
3 | do |
3 | + 1 |
使用1上一次命令的返回值。0表示执行成功,非零值表示出错,注意这里与C语言的不同之处。
2的命名很好记,问号表示询问OS,上一次执行的命令结果怎么样啦?需要注意每执行一个命令都会覆盖这个变量。
3 | 0 |
使用2执行并获取命令输出赋值给变量,等同于双引号的功能。
3 | [email protected]:~# echo $(date) |
使用$[]
对表达式进行求值,与expr
命令不同的是,1用于插值,而2则将值输出。
3 | [email protected]:~# echo $[ 1 + 1 ] |
使用2获取当前进程ID。
[email protected]:~# echo $$ |
|
使用1获取后台运行的最后一个进程ID,在命令后面使用2即可以创建后台进程。
3 | [email protected]:~# echo $! |
使用2获取当前shell的选项。具体的选项意义可以参考segmentfault上的回答。
[email protected]:~# echo $- |
以上是内存溢出为你收集整理的Linux Shell中‘$‘符号的N种用法全部内容,希望文章能够帮你解决Linux Shell中‘$‘符号的N种用法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)