Shell 带有全局变量的脚本函数
Shell script function with global variable
昨天我得到了一个非常简单的任务,但不幸的是我不能用一个好的代码来完成。
任务简介:我有很多参数,我想在安装程序脚本中使用 whiptail "interactive" 模式询问。
代码详情:
#!/bin/bash
address="192.168.0.1" # default address, what the user can modify
addressT="" # temporary variable, that I want to check and modify, thats why I don't modify in the function the original variable
port="1234"
portT=""
... #there is a lot of other variable that I need for the installer
function parameter_set {
=$(whiptail --title "Installer" --inputbox "" 12 60 "" 3>&1 1>&2 2>&3) # thats the line 38
}
parameter_set "addressT" "Please enter IP address!" "$address"
parameter_set "portT" "Please enter PORT!" "$port"
但我收到以下错误:
"./install.sh: line: 38: address=127.0.0.1: command not found"
如果我将变量修改为另一个(不是函数的参数),效果很好。
function parameter_set {
foobar=$(whiptail --title "Installer" --inputbox "" 12 60 "" 3>&1 1>&2 2>&3)
echo $foobar
}
我尝试使用全局 retval 变量,并将函数外部赋值给原始变量,它有效,但我认为这不是完成此任务的最佳解决方案。
谁能帮帮我,我做错了什么? :)
提前致谢(抱歉我的英语不好..),
阿提拉
由于重定向,您的 whiptail 命令似乎没有产生任何输出。因此命令替换将值留空。尝试删除它们。另外最好先将新值保存到局部变量:
parameter_set() {
local NAME=
local NEWVALUE=$(whiptail --title "Installer" --inputbox "" 12 60 "")
export $NAME="$NEWVALUE"
}
昨天我得到了一个非常简单的任务,但不幸的是我不能用一个好的代码来完成。
任务简介:我有很多参数,我想在安装程序脚本中使用 whiptail "interactive" 模式询问。
代码详情:
#!/bin/bash
address="192.168.0.1" # default address, what the user can modify
addressT="" # temporary variable, that I want to check and modify, thats why I don't modify in the function the original variable
port="1234"
portT=""
... #there is a lot of other variable that I need for the installer
function parameter_set {
=$(whiptail --title "Installer" --inputbox "" 12 60 "" 3>&1 1>&2 2>&3) # thats the line 38
}
parameter_set "addressT" "Please enter IP address!" "$address"
parameter_set "portT" "Please enter PORT!" "$port"
但我收到以下错误:
"./install.sh: line: 38: address=127.0.0.1: command not found"
如果我将变量修改为另一个(不是函数的参数),效果很好。
function parameter_set {
foobar=$(whiptail --title "Installer" --inputbox "" 12 60 "" 3>&1 1>&2 2>&3)
echo $foobar
}
我尝试使用全局 retval 变量,并将函数外部赋值给原始变量,它有效,但我认为这不是完成此任务的最佳解决方案。
谁能帮帮我,我做错了什么? :)
提前致谢(抱歉我的英语不好..), 阿提拉
由于重定向,您的 whiptail 命令似乎没有产生任何输出。因此命令替换将值留空。尝试删除它们。另外最好先将新值保存到局部变量:
parameter_set() {
local NAME=
local NEWVALUE=$(whiptail --title "Installer" --inputbox "" 12 60 "")
export $NAME="$NEWVALUE"
}