Shell 什么是ksh%!句法意义

Shell 什么是ksh%!句法意义,shell,ksh,Shell,Ksh,我正在跟踪一个ksh遗留脚本,该脚本使用了我无法破译的“!tempout”工件。什么是%语法意味着什么?第一次使用它是touch%!tempout,所以我猜它是某种文件名表示。可能不是ksh特有的?我试图附和这句话,但它只是一字不差地显示出来 这种方法的其他用途包括: cat %!tempout mv $!tempout %!tempout2 upr -trans -dp=$duplex -P=$pr %!tempout2 mv %!tempout $1.ps 由于专有限制,我无法提供更多上

我正在跟踪一个ksh遗留脚本,该脚本使用了我无法破译的“!tempout”工件。什么是
%语法意味着什么?第一次使用它是
touch%!tempout
,所以我猜它是某种文件名表示。可能不是ksh特有的?我试图附和这句话,但它只是一字不差地显示出来

这种方法的其他用途包括:

cat %!tempout
mv $!tempout %!tempout2
upr -trans -dp=$duplex -P=$pr %!tempout2
mv %!tempout $1.ps


由于专有限制,我无法提供更多上下文。希望这足以获得一些见解。

根据@CharlesDuffy的评论进行调查后,答案似乎是“%!tempout”是一个文字文件名。在本例中,它是一个包含postscript内容的文件,因此可能“%!”前缀为使用该文件的任何内容提供了格式提示。

设置-x(告诉shell在实际执行命令时跟踪命令)显示了什么?如果它显示名称
%!tempout
实际上被传递给了
cat
/
mv
/等等,这就是你的答案——它确实是一个逐字逐句的名字,只是一个不寻常的名字。OTOH,如果替换了一个不同的值,这表明确实存在需要调查的内容。(如果您愿意,您也可以运行
ksh-xyourscript
,而不是将
set-x
放在脚本的顶部,效果相同)。@CharlesDuffy我使用了
set-x
和内联
eval%!tempout
。两者都显示文字“%!tempout”。正如您所建议的,我的答案似乎是它是一个文本文件名
与交互式Shell中的历史机制一起使用(可能也会这样使用百分比
%
)。我不确定历史是否适用于非交互式shell。通常,在Korn shell中,
$
表示在后台运行的最后一个命令的PID(使用
&
)-和
$!tempout
将被解释为
$的值
后紧跟单词
tempout
。YMMV。在编写遗留脚本的操作系统上,ksh的版本是什么?该操作系统的版本是什么?@JonathanLeffler,是的,我很熟悉$and!美元!,但这不是我的问题。虽然我认识到这方面的潜力,但还是要感谢大家的意见。