如何在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=propertyfile
和propertyfile=$1.
有人可以帮助我吗?
答案 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