shell各种特殊字符的含义和使用

变量说明

$$

Shell本身的PID(ProcessID)

$!

Shell最后运行的后台Process的PID

$?

最后运行的命令的结束代码(返回值)

$-

使用Set命令设定的Flag一览

$*

所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。

$@

所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。

$#

添加到Shell的参数个数

$0

Shell本身的文件名

$1~$n

添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

脚本举例

我们先写一个简单的脚本,执行以后再解释各个变量的意义

# touch variable

# vi variable

脚本内容如下:

#!/bin/sh

echo "number:$#"

echo "scname:$0"

echo "first :$1"

echo "second:$2"

echo "argume:$@"

保存退出

赋予脚本执行权限

# chmod +x variable

执行脚本

# ./variable aa bb

number:2

scname:./variable

first: aa

second:bb

argume:aa bb

结果分析

通过显示结果可以看到:

$# 是传给脚本的参数个数

$0 是脚本本身的名字

$1是传递给该shell脚本的第一个参数

$2是传递给该shell脚本的第二个参数

$@ 是传给脚本的所有参数的列表

其他各种特殊符号含义及用法

============================================================================================

# 井号 (comments)

井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行。

# This line is comments.

echo \"a = $a\" # a = 0

由于这个特性,当临时不想执行某行指令时,只需在该行开头加上 # 就行了。这常用在撰写过程中。

#echo \"a = $a\" # a = 0

如果被用在指令中,或者引号双引号括住的话,或者在倒斜线的后面,那他就变成一般符号,不具上述的特殊功能。

============================================================================================

~ 帐户的 home 目录

算是个常见的符号,代表使用者的 home 目录:cd ~;也可以直接在符号后加上某帐户的名称:cd ~user

或者当成是路径的一部份:~/bin

~+ 当前的工作目录,这个符号代表当前的工作目录,她和内建指令 pwd的作用是相同的。

# echo ~+/var/log

~- 上次的工作目录,这个符号代表上次的工作目录。

# echo ~-/etc/httpd/logs

============================================================================================

; 分号 (Command separator)

在 shell 中,担任\"连续指令\"功能的符号就是\"分号\"。譬如以下的例子:cd ~/backup ; mkdir startup ;cp ~/.* startup/.

============================================================================================

;; 连续分号 (Terminator)

专用在 case 的选项,担任 Terminator 的角色。

case \"$fop\" inhelp) echo \"Usage: Command -help -version filename\";;version) echo \"version 0.1\" ;;esac

============================================================================================

. 逗号 (dot,就是"点")

在 shell 中,使用者应该都清楚,一个 dot 代表当前目录,两个 dot 代表上层目录。

CDPATH=.:~:/home:/home/web:/var:/usr/local

在上行 CDPATH 的设定中,等号后的 dot 代表的就是当前目录的意思。

如果档案名称以 dot 开头,该档案就属特殊档案,用 ls 指令必须加上 -a 选项才会显示。除此之外,

在 regularexpression 中,一个 dot 代表匹配一个字元。

============================================================================================

'string' 单引号 (single quote)

被单引号用括住的内容,将被视为单一字串。在引号内的代表变数的$符号,没有作用,也就是说,他被视

为一般符号处理,防止任何变量替换。

heyyou=home e

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值