我遇到了一个shell脚本,其中的行如下所示
Pfile=/params/tech1.dat:$Pfile;export Pfile
目的是创建和导出名为Pfile
的变量,其中包含值"/params/tech1.dat"
但``$ Pfile``在做什么?具体到什么目的是结肠服务?
已经搜索了大量的Unix信息源和手册,但找不到一个有助于解释上述内容的示例。
答案 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变量(例如PATH
和LD_LIBRARY_PATH
)中目录的分隔符。不知道您是否有某种理由在变量中使用:
。