在unix shell脚本中使用带有点的变量

时间:2014-08-18 05:08:14

标签: bash unix

如何在Unix(Bash)shell脚本中使用带点的变量?我有以下脚本:

#!/bin/bash
set -x
"FILE=system.properties"
FILE=$1
echo $1
if [ -f "$FILE" ];
then
   echo "File $FILE exists"
else
   echo "File $FILE does not exist"
fi

这基本上就是我所需要的{1 x=propertyfilepropertyfile=$1.有人可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

您不能使用点声明变量名称,但可以使用关联数组映射键,这是更合适的解决方案。这需要Bash 4.0。

declare -A FILE                      ## Declare variable as an associative array.
FILE[system.properties]="somefile"   ## Assign a value.
echo "${FILE[system.properties]}"    ## Access the value.

答案 1 :(得分:2)

请注意以下行:

"FILE=system.properties"

尝试执行很可能不存在的命令FILE=system.properties。要分配给变量,引号必须在等于:

之后
FILE="system.properties"

从问题中说出你所追求的内容有点难以理解,但听起来好像你可能是在间接变量名之后。不幸的是,bash的标准版本不允许使用变量名称的点。

但是,如果您使用下划线,那么:

FILE="system_properties"
system_properties="$1"
echo "${FILE}"
echo "${!FILE}"

将回应:

system_properties
what-was-passed-as-the-first-argument