繁体   English   中英

Shell 变量值替换

[英]Shell variable value substitution

这是我的问题的描述,我有一个从文件中获取值的 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

这是一个值的示例

协议

将值解析为 2 个变量 所以在回显 $schema 之后,我希望 MCLM 回显 $tabname 我希望 OPPP

但我会得到空字符串

我正在使用 kornshell,我认为它是旧版本

您可以像这样使用read更有效地编写循环,而无需使用像cut这样的外部命令来提取每个字段:

while IFS=. read -r schema table _; do
    # your logic
done < "$folder/tables_ddl_list.log"

read的第三个参数_是为了安全——如果输入在一行上有多个点,所有额外的值都将被_捕获。 或者,您可以根据_是否设置添加错误检查。

有关的:

当你读入变量的值时尝试去掉双引号,并在 $table 变量中使用双引号,例如:

schema=$(echo "$table" | cut -d'.' -f1)
tabname=$(echo "$table" | cut -d'.' -f2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM