這些完全相同,但第一個不起作用,第二個起作用。任何人都知道如何獲得第一個工作?我認爲這是空的問題。我嘗試在第一個替換空值,但仍然無法讓它工作。也許我錯誤地替換了空值?用新行代替空值 - 我認爲
1)這並不工作
#!/bin/bash
export CSM_DATA_DIR="/opt/halogen/dbservice/changes/Ayman/test2"
export CUSTOMER_LIST_FILES="${CSM_DATA_DIR}/*_customer_list.csv"
export ELMS_STORAGE_FILES="${CSM_DATA_DIR}/*_elms_storage.csv"
paste <(tr ' ' '\n' <<<"$CUSTOMER_LIST_FILES") <(tr ' ' '\n' <<<"$ELMS_STORAGE_FILES") | while read first_name last_name
do
echo $first_name : $last_name
done
輸出錯了,應該是兩條線,並應正確劃分
/opt/halogen/dbservice/changes/Ayman/test2/sl1_customer_list.csv /opt/halogen/dbservice/changes/Ayman/test2/sl2_customer_list.csv : /opt/halogen/dbservice/changes/Ayman/test2/sl1_elms_storage.csv /opt/halogen/dbservice/changes/Ayman/test2/sl2_elms_storage.csv
2)本工程爲intneded
#!/bin/bash
export fname="/opt/halogen/dbservice/changes/Ayman/test2/sl1_customer_list.csv /opt/halogen/dbservice/changes/Ayman/test2/sl2_customer_list.csv"
export lname="/opt/halogen/dbservice/changes/Ayman/test2/sl1_elms_storage.csv /opt/halogen/dbservice/changes/Ayman/test2/sl2_elms_storage.csv"
paste <(tr ' ' '\n' <<<"$fname") <(tr ' ' '\n' <<<"$lname") | while read first_name last_name
do
echo $first_name : $last_name
done
輸出正確,兩行並行讀取變量
/opt/halogen/dbservice/changes/Ayman/test2/sl1_customer_list.csv : /opt/halogen/dbservice/changes/Ayman/test2/sl1_elms_storage.csv
/opt/halogen/dbservice/changes/Ayman/test2/sl2_customer_list.csv : /opt/halogen/dbservice/changes/Ayman/test2/sl2_elms_storage.csv
我已經發布了緊靠一個星期的問題現在得到所有的答案,我不知道該說些什麼,但謝謝你,我會希望回到這一回社區1天
故意引用第一個示例中的星號嗎? – user000001
@ user000001,即使它不是,因爲結果被存儲到一個字符串而不是一個列表,它是用來存儲多個文件名的錯誤數據結構。 –
順便說一句 - 'export'只在你想通過把子進程放到環境中而不是將它保存在本地shell的內存中的時候才能使用一個變量的情況下才需要。並參見http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html re:POSIX定義的命名約定(全大寫名稱用於對shell和操作系統有意義的變量,而小寫的名字是保留的供應用使用)。 –