Unix shell脚本 - 冒号的目的

时间:2014-01-09 20:02:45

标签: shell unix colon

我遇到了一个shell脚本,其中的行如下所示

Pfile=/params/tech1.dat:$Pfile;export Pfile

目的是创建和导出名为Pfile的变量,其中包含值"/params/tech1.dat"

但``$ Pfile``在做什么?具体到什么目的是结肠服务?

已经搜索了大量的Unix信息源和手册,但找不到一个有助于解释上述内容的示例。

3 个答案:

答案 0 :(得分:2)

冒号用作许多列出路径的变量的分隔符。它只是为此目的而按惯例选择的角色。

在这里,这段代码将Pfile分配给通过评估右手网站获得的字符串,该网址包含常量字符串/params/tech1.dat:和变量$Pfile。如果写成Pfile="/params/tech1.dat:$Pfile";export Pfile,它可能会更清楚。

在您的具体示例中,/params/tech1.dat位于$Pfile的前面,因此假设$Pfile的值为/other/path,则/params/tech1.dat:/other/path变为/params/tech1.dat。许多程序都将其理解为含义:查看other/path,然后查看PATH, LD_LIBRARY_PATH, LIBRARY_PATH, CPATH, PYTHONPATH

常见示例:$Pfile等。

如果/params/tech1.dat:之前未设置或为空,则最终会出现一个尾部冒号::根据您的程序,可能会或可能不会被理解为工作目录(它是上述例子的案例)。

请注意,:是许多文件系统中路径名中的有效字符,因此,如果某个路径包含一个路径,则它很可能会被转义。

最后,请注意,在其他情况下,{{1}}是一个什么都不做的Bash函数。

答案 1 :(得分:2)

/params/tech1.dat路径添加到Pfile可能已包含的路径中。所以Pfile可能已经是:

echo $Pfile
/foo/bar:/blah/bleh

然后执行语句:

Pfile=/params/tech1.dat:$Pfile;export Pfile

你得到:

echo $Pfile
/params/tech1.dat:/foo/bar:/blah/bleh

正如其他人所提到的,冒号(:)通常用作路径或字段分隔符。

答案 2 :(得分:0)

在这种情况下,您要将$Pfile的现有值附加到/params/tech1.dat。如果没有现有值,您将获得/params/tech1.dat:作为分配给$Pfile的值。 :充当两个值之间的分隔符。

通常,:用作shell变量(例如PATHLD_LIBRARY_PATH)中目录的分隔符。不知道您是否有某种理由在变量中使用: