曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 8404|回复: 0
打印 上一主题 下一主题

内置变量:$-, $_, $$, $!

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34387
跳转到指定楼层
楼主
发表于 2011-6-5 21:52:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
$- 变量表示传递给脚本的 FLAG,这个 FLAG 是由 set 命令指定的。

示例代码:
[Bash shell] 纯文本查看 复制代码
#!/bin/bash

set -x -e

echo "hello shell builtin varibal"
echo "$-"

exit 0

运行输出:
$ ./var.sh
+ echo 'hello shell builtin varibal'
hello shell builtin varibal
+ echo ehxB
ehxB
+ exit 0
在脚本中,我们用 set 为脚本添加了 -e 和 -x 两个 Flag,然后在 echo $- 中可以看到这两个 Flag 的输出,在 ehxB 中,h 和 B 这两个 Flag 是默认传递进来的。

$$ 变量表示当前脚本的 PID 值。看下面代码示例:
[Bash shell] 纯文本查看 复制代码
#!/bin/sh

echo "$$"

sleep 30

exit 0

运行上面的脚本,然后在 30 秒内在另一个终端里用 ps 命令验证即可知晓。

$! 变量表示后台运行的最后的工作的 PID 。

测试代码:
[Bash shell] 纯文本查看 复制代码
#!/bin/bash

LOG=$0.log

COMMAND1="sleep 100"

echo "Logging PIDs background commands for script: $0" >> "$LOG"

echo >> "$LOG"

echo -n "PID of \"$COMMAND1\": " >> "$LOG"

${COMMAND1} &

echo $! >> "$LOG"

在输出的 LOG 文件中可以看到 sleep 这个进程的 PID 号(sleep),在 100S 期间可以用 ps 来进行验证。

$_ 该变量保存之前执行命令的最后一个参数。
比如运行指令 ps aux ,然后再运行 echo $_ 就可以看到输出为:
$ ps aux

$ echo $_
aux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-6-17 01:56 , Processed in 0.095924 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表