gpt4 book ai didi

php - 用于输入数组数量和填充数组数据的 bash 脚本

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:46:40 25 4
gpt4 key购买 nike

今天我想写一个小的 bash 脚本来在 SQL 数据库上创建数据库表。我以为很快就会有不同的结果。无论如何,我处于精神障碍,需要建议。最后我想做的是让用户输入表中的列数,然后为他们开始输入的数量指定列标签和数据类型。然后我将使用数组元素来组装我的 SQL 服务器命令。起初对我来说这似乎很明显,但现在不再那么明显了。感谢您的帮助!

我正打算做类似...

    #!/bin/bash
echo "Enter database name: "
read dbname
echo "Enter table name: "
read tablename
echo "Enter column count: "
read columns
echo "Enter database username: "
read dbuser
echo "Enter database user password: "
read dbpw

for i in ${columns[@]} do
echo "Column "$i" Name: "
read array_cname[$i]
echo "Column "$i" Data Type: "
read array_ctype[$i]
done

table="USE $dbname CREATE TABLE $tablename(array_cname[] array_ctype[] etc etc etc)"
mysql -u$dbuser -p$dbpw -e "$table"

上面显然是一个损坏的脚本,我只是在蚕食了我原来的想法之后才把它鞭打起来。

最佳答案

我将看看您遇到困难的部分 - 遍历列 - 您应该能够将这些经验教训带回到您的脚本中。

这是我写的,省略了您已经完成的简单部分,并将 columns 设置为 2,以在我测试时节省输入。

#!/bin/bash

columns=2

declare -a cols

for ((i=1; i<=$columns; i++))
do
read -p "Column $i Name: " n
read -p "Column $i Data Type: " t
cols[$i]="$n $t"
done

echo "CREATE TABLE t (${cols[*]} etc etc etc)"

解释

  • 我使用declare 来确保我们的数组变量是正确的类型。当我们第一次分配给一个元素时,Bash 会推断它是一个数组,但我想说清楚。
  • 为了枚举从 1$columns 的整数,我使用了 Bash for 循环。
  • fordo 之间缺少分号或换行符。
  • 我没有尝试直接读入数组元素,而是读入了两个临时变量:n 用于名称,t 用于类型。我还使用 -pread 为我们发出提示。
  • 我没有为名称和类型使用两个单独的数组,因为 Bash 没有提供交错值的简单方法。相反,我将名称和类型放入单个数组元素中。如果需要,我可以将它们放入单独的元素中,使用 cols+=("$n""$t")
  • 要在替换中扩展数组的所有元素,我使用 ${cols[*]}
  • 我没有对输入进行任何验证;我假设此脚本是为了方便您自己使用,而不是用于共享的强大工具。

测试结果

$ ./36337995.sh
Column 1 Name: a
Column 1 Data Type: int
Column 2 Name: b
Column 2 Data Type: int
CREATE TABLE t (a int b int etc etc etc)

关于php - 用于输入数组数量和填充数组数据的 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36337995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com