我是shell脚本新手。我正在尝试创建一个大小为n
的数组,其中n
在运行时由用户输入。
while [ $i -lt $n ]
do
echo For person $i enter the name?
read io
eval Name[$index]= $io
done
当我尝试这样做时,每次循环从用户获得输入时都会覆盖这些值。
例如:如果第一个人是 - 汤姆,如果第二个人是 - 约翰。然后,当我尝试在脚本末尾打印所有人的姓名时,第1个人的姓名将被第n个名称覆盖(这意味着,所有名称都存储在单个变量而不是数组中)。
有人能告诉我哪里出错了吗?
答案 0 :(得分:0)
您需要在循环中增加public function bind($param, $value, $type = null) {
if (is_null ( $type )) {
switch (true) {
case is_int ( $value ) :
$type = PDO::PARAM_INT;
break;
case is_bool ( $value ) :
$type = PDO::PARAM_BOOL;
break;
case is_null ( $value ) :
$type = PDO::PARAM_NULL;
break;
default :
$type = PDO::PARAM_STR;
}
}
$this->stmt->bindValue ( $param, $value, $type );
}
public function query($query) {
$this->stmt = $this->dbh->prepare($query);
}
public function execute(){
return $this->stmt->execute();
}
,以便最终退出。此行将i
递增1:
i
您无需在let i+=1
中使用eval
。
没有名为eval Name[$index]= $io
的变量(至少在您的代码示例中没有)。我假设您打算在那里使用index
。 (即i
应为Name[$index]
)
此代码有效:
Name[$i]