写一个shell脚本 从当前目录table_list.tmp文件中 循环读取每行数据作为输入参数table,打印出table参数值。
时间: 2024-03-18 10:38:51 浏览: 20
可以使用以下脚本实现:
```shell
#!/bin/bash
# 循环读取每行数据
while read table
do
# 打印出table参数值
echo $table
done < table_list.tmp
```
说明:
1. `#!/bin/bash` 表示使用 bash shell 解释器执行该脚本。
2. `while read table` 表示循环读取 `table_list.tmp` 文件中的每一行数据,并将每行数据赋值给变量 `$table`。
3. `echo $table` 表示打印出变量 `$table` 的值。
4. `< table_list.tmp` 表示将 `table_list.tmp` 文件作为输入流传递给 `while` 循环。
相关问题
shell脚本通过传参数将一个文件中的数据读取的另一个shell脚本中
可以通过在第一个shell脚本中使用循环读取文件每一行的方法,将每一行数据作为参数传递给第二个shell脚本。具体实现方法如下:
在第一个shell脚本中:
```
#!/bin/bash
while read line
do
sh second_script.sh $line
done < filename
```
在第二个shell脚本中,可以通过$1来获取第一个shell脚本传递过来的参数,即每一行的数据:
```
#!/bin/bash
echo "The line is: $1"
```
这样就可以将一个文件中的数据逐行读取并传递给另一个shell脚本进行处理了。
写一段shell脚本连接达梦数据库读取指定的表,数据库中每条数据生成一个.ctl文件
可以使用达梦数据库提供的`dmdsqld`命令行工具来连接数据库并读取指定的表,使用`echo`命令将每行数据生成一个`.ctl`文件。以下是一段示例脚本:
```shell
#!/bin/bash
# 连接数据库,执行查询
dmdsqld -h hostname -p port -d dbname -u username -w password -c "SELECT * FROM table_name" | while read line
do
# 分割行数据为数组
arr=(${line//|/ })
# 生成文件名和文件内容
file_name="${arr[0]}.ctl"
file_content="${arr[1]}"
# 写入文件
echo "$file_content" > "$file_name"
done
```
其中,`hostname`为数据库主机名,`port`为端口号,`dbname`为数据库名,`username`为用户名,`password`为密码,`table_name`为要读取的表名。使用`dmdsqld`命令执行查询,将每行数据分割为数组,根据第一列的值生成文件名,将第二列的值写入文件中。