这里是我问题的描述,我有一个while循环,它从文件中获取值
while read table
do
schema="$(echo $table | cut -d'.' -f1)";
tabname="$(echo $table | cut -d'.' -f2)";
echo "$schema";
echo "$tabname";
echo $folder/$table_space"_auto_ddl"/$tabname"_AUTO_"$schema".sql.tmp"
echo $folder/$table_space"_auto_ddl"/${tabname}"_AUTO_"${schema}.sql
print $schema.$tabname;
done < $folder/tables_ddl_list.log
这是一个值的示例
MCLM.OPPP
将值解析为2个变量 因此,在回显了$ schema之后,我期望得到MCLM 呼应$ tabname我希望OPPP
但是我会得到空字符串
我正在使用kornshell,我认为它是较旧的版本
答案 0 :(得分:1)
尝试在读取变量的值时删除双引号,并在$ table变量中使用双引号,例如:
schema=$(echo "$table" | cut -d'.' -f1)
tabname=$(echo "$table" | cut -d'.' -f2)
答案 1 :(得分:1)
您可以使用read
这样更有效地编写循环,而无需为要提取的每个字段使用诸如cut
之类的外部命令:
while IFS=. read -r schema table; do
# your logic
done < "$folder/tables_ddl_list.log"
相关: