今天我想我会编写一个小的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"
以上显然是一个破碎的剧本,我只是在蚕食了我最初的目标之后鞭打它。
答案 0 :(得分:1)
我只是要看看你正在努力的部分 - 循环遍历列 - 你应该能够把这些课程带回你的剧本。
这是我写的,省略了你已经完成的简单位,并将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)