有人可以解释一下这个脚本行

时间:2017-04-07 05:52:04

标签: bash shell aix

有人可以从AIX bash脚本解释我这个脚本行:

#!/bin/bash
touch /tmp/</.D2D

我想文件/.D2D中的行(项目)将被读取,tmp目录下将触及的文件:

当/.D2D文件的内容为

file1
file2

然后将执行以下操作:

touch /tmp/file1
touch /tmp/file2

或者这个:

#!/bin/bash
PM=text
FILELIST=/tmp/$PM.</.filelist

这里的FILELIST是一个数组,其中/.filelist的行与/tmp/text.line1OfFilelistfile和/tmp/text.line2OfFilelistfile连接起来等等......

我的理解是对的吗? 感谢

3 个答案:

答案 0 :(得分:1)

触摸无法从Stdin读取,因此输入重定向除了bash检查是否存在要重定向的文件之外没有其他效果。因此代码大致相当于

if [[ -f /.DSD ]]
then
  touch /tmp
else
  echo bash: /.DSD: No such file or directory 1>&2
fi

到目前为止的理论。在实践中,我猜这行中有一个拼写错误。

答案 1 :(得分:0)

man page for touch没有提到touch命令从stdin中读取任何内容。因此,命令不会触及列表中的任何文件,它们只触摸直接在命令行上提供的文件。

要确认这一点,请使用strace,ktrace,truss等工具运行bash脚本。他们会注销所有发生的系统调用。

答案 2 :(得分:0)

好的,那些回答的人的观点向我展示了正确的方法。上面的例子不起作用。脚本文件,我目前analazing里面有格式/语法错误。所以&#34;