如果变量=则将变量设置为BASH

如果变量=则将变量设置为BASH

我怎样才能做这样的事情

   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 脚本专家。

相关内容