我怎样才能做这样的事情
if [[ $variable = name ]]
then
$variable=fname
fi
if [[ $variable = surname]]
then
$variable=sname
fi
因此,根据结果更改值,因为我有另一个基于 Web 的脚本,它将变量设置为用户友好的名称,但我需要脚本将其更改为正确的名称。用户可能会选择多个,所以我需要根据他们的选择进行更改
答案1
检查你的赋值语法,你不应该有一个$
。$
是为了扩大变量。
# standard sh syntax
case $variable in
(name) variable=fname;;
(surname) variable=sname;;
(*) printf >&2 '%s\n' "$variable not supported"; exit 1;;
esac
也可以看看:
# ksh93/bash/zsh specific
typeset -A map=(
[name]=fname
[surname]=sname
)
variable=${map[$variable]?$variable not supported}
(请注意,bash 的关联数组不支持空字符串作为键值)。
无论如何,您都不想编写将用户输入作为 shell 脚本的 Web CGI,因为您几乎肯定会引入安全漏洞,特别是如果您不是 shell 脚本专家。