簡體   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