在 BASH 脚本中选择导入的变量

在 BASH 脚本中选择导入的变量

我有三个 bash 脚本。w.txt、t.txt 和 d.txt。

文本文件:

#!/bin/bash

wtimes=( 8:20 9:30 10:11 )
wtimef=( 10:10 11:20 13:30 )

echo $wtimes >> d.txt

文本文件

#!/bin/bash

. ./w.txt

echo "${wtimes[1]}"
echo "${wtimef[1]}"

我正在尝试运行 t.txt,这样我就可以在不运行 的情况下使用 t.txt 中的数组变量 $wtimes 和 $wtimef echo $wtimes >> d.txt。这非常简单,实际上 w.txt 中还有更多命令我不想在 t.txt 中执行。我该如何在这里做出选择?有人可以帮忙吗?

答案1

一个简单的方法是让导入的文件知道它已被导入,例如:

#!/bin/bash

wtimes=( 8:20 9:30 10:11 )
wtimef=( 10:10 11:20 13:30 )

if [ "${imported}" = "yes" ] ; then
        exit;
fi

echo $wtimes >> d.txt

#!/bin/bash

imported=yes

. ./w.txt

echo "${wtimes[1]}"
echo "${wtimef[1]}"

但您可能需要重新考虑您的策略。如果不同的脚本使用一组通用变量,则将这些变量放在单独的文件中可能是一个好主意。例如:

vars.sh:

wtimes=( 8:20 9:30 10:11 )
wtimef=( 10:10 11:20 13:30 )

w.sh:

. ./vars.sh
echo $wtimes >> d.txt

t.sh:

. ./vars.sh

echo "${wtimes[1]}"
echo "${wtimef[1]}"

相关内容