如何处理由一个脚本创建的输出文件夹

时间:2012-03-02 12:24:03

标签: bash sh

我有一个脚本(first.sh),它在特定位置创建一个输出文件夹。现在,第二个脚本(second.sh)需要此输出文件夹的位置,因为它需要将数据处理到其中。

请记住,first.sh脚本将根据用户需要生成输出文件夹。(根据用户设置的路径)。

现在我需要使用second.sh脚本来查找first.sh脚本生成的输出文件夹的路径,然后它应该进入它以处理一些数据?

我需要上述问题的逻辑。还要记住,输出文件夹的路径总是会改变,而second.sh脚本应该能够找到确切的路径和输出文件夹。

first.sh / add / sub / output_folder(用户决定输出路径)

second.sh 它应该找到“/ add / sub / output_folder”位置

希望它有所帮助.Plz帮助我。

3 个答案:

答案 0 :(得分:0)

这两个脚本的更多细节会有所帮助。

我认为你不能/不要在second.sh中吃午餐。因为这是最简单的选择。

接近此方法的一种方法是通过first.sh将文件夹位置输出到属性文件,即second.sh可以访问。

答案 1 :(得分:0)

如果您允许从second.sh拨打first.sh,则可以

first.sh $YOUR_OUTPUT_PATH

您可以使用$1访问该路径,例如

echo $1

答案 2 :(得分:0)

根据您调用代码的方式,您可以使用$ PPID生成脚本1和脚本2可以交换信息的原始方法。

$PPID是脚本的parent-process-id。在以下示例中,scripta.sh和scriptb.sh都看到相同的值:

scripta.sh:

#!/bin/sh
datadir=/tmp/$PPID.tmp
mkdir -p $datadir
sleep $(( RANDOM % 60 ))
echo Some data from $PPID/$$ on $(tty) >$datadir/testfile.txt_tmp
mv $datadir/testfile.txt_tmp $datadir/testfile.txt

scriptb.sh

#!/bin/sh
datadir=/tmp/$PPID.tmp
timeout=60
while (( (i=i+1) < timeout )); do
  cat $datadir/testfile.txt 2>&- && break
  sleep 1
done

此示例最多可保留60秒以显示数据,无论有多少用户处于活动状态,该示例都将有效。 您应该通过在两个或多个单独的终端上运行以下来测试它。

scripta.sh &
scriptb.sh &

您需要另一个脚本(或通宵过程)来清理datadir目录。

顺便说一句,我不建议/ tmp作为这些文件的保留区域。在有很多空间的其他地方创建一个缓冲区目录。