我正在尝试将变量从一个脚本导出到主脚本,并将其中一个导入的变量作为参数传递给主脚本。
fruitcolour.sh
这是只有变量的脚本:
apple="Red"
mango="Yellow"
orange="Orange"
pear="Green"
这是主要脚本GetFruitColour.sh
:
#!/bin/bash
source fruitcolour.sh
echo "The colour of " $@ " is " $@ "."
对于作为参数传递apple
,我想获取变量apple
ie的值Red
。
所以,当我跑步时./GetFruitColour.sh apple
它必须给出输出::The colour of apple is Red.
实现此目的的一种方法是通过间接方式——从第一个变量的值中引用另一个变量。
展示:
结果是:
因为 bash 首先
!var
表示var
变量的值,然后通过解释${apple}
并转换为Red
.因此,您的 GetFruitColour.sh 脚本可能如下所示:
我已经将源脚本的路径设置为相对路径而不是裸路径,以便更清楚地了解文件的位置(如果给定的文件名不包含斜杠,shell 将在
$PATH
变量中搜索它,这可能会让您感到惊讶)。我也改成
echo
了printf
。功能上的变化是使用循环变量
$arg
和它的间接扩展来产生所需的值:请注意,这里没有错误检查:
您可能会发现使用关联数组更容易:
您需要使用间接变量引用:
水果色.sh: