2017-09-15 260 views
0

我寫過一個shell腳本。 for循環運行兩次。不知道如何解決這個問題。For循環執行兩次,不知道如何修復

任何人都可以幫助我解決問題嗎?

代碼:

#!/bin/sh 
mkdir -p C:/Users/spatro/Desktop/attachment_backup 
feed=`sqlplus -s <<EOF 
$1/$2 
whenever sqlerror exit sql.sqlcode rollback 
SET SERVEROUTPUT ON 
SET VERIFY OFF 
SET FEEDBACK OFF 
SET HEADING OFF 
SET PAGESIZE 0 
select attach_sub_folder from DC_Purge_Files_log where entity_type = 'Attachment' and delete_complete = 'N'; 
/
exit 
EOF` 
for counter in $feed 
do 
mkdir -p C:/Users/spatro/Desktop/attachment_backup/$counter 
echo "Sub folder created "$counter 
done 

回答

0

規則數量安全shellscripting之一:Always use quotes

你的循環只執行一次,有命令替換(在反引號的東西),$飼料變量被引用。就目前而言,這些人都在尋求麻煩!具體來說就是分詞和全局擴展。

如果你想一些工具:

Shellcheck會回答你的問題,並Naziquote會修復(見this問題)。

0

如果你想在for循環只執行一次,使用break語句之前 「完成」

計數器在$飼料 做 的mkdir -p C:/用戶/ spatro /桌面/ attachment_backup/$計數器 回聲「創建的子文件夾」$ counter break done