功能後,我有一個腳本,在一個列表上循環。在每次迭代時,它都需要調用一個函數來構造一個'diff'命令來通過'eval'比較兩個遠程文件。
'diff'命令通過兩個進程替換獲取其輸入,其中每個進程通過執行無密碼身份驗證(通過公鑰/私鑰)的'ssh'來俘獲遠程文件。
'diff'和'ssh'執行已經經過腳本測試,並且工作正常。
代碼
這裏我發表我的劇本很短的版本,但是產生了同樣的問題:
#!/bin/bash
func(){
NUM=$1
echo "func $NUM"
COMMAND="diff <(ssh [email protected] 'cat file1') <(ssh [email protected] 'cat file2')"
eval "${COMMAND}" 1>/dev/null
RESULT=$?
}
LIST="1
2
3
4
5"
echo "$LIST" | while read NUM ; do
echo "main $NUM"
func $NUM
done
預期結果
main 1
func 1
main 2
func 2
main 3
func 3
main 4
func 4
main 5
func 5
問題
腳本的第一個迭代後停止:
main 1
func 1
問題
你知道爲什麼循環停止?以及如何解決它?
感謝四位關於exec的良好解釋和建議。 – Manolo