変数=の場合、変数を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の連想配列は空の文字列をキーとしてサポートしません。)

いずれにせよ、ユーザー入力をシェルスクリプトとして使用するWeb CGIを作成したくありません。特に、シェルスクリプトの専門家でない場合は、セキュリティ抜け穴が発生することがほとんど確実であるためです。

関連情報