[英]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.