[英]bash script to enter array quantity and fill array data
今天我想我会写一个小的 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
循环。for
和do
之间的分号或换行符。n
表示名称, t
表示类型。 我还使用-p
使read
为我们发出提示。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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.