For循环执行两次,不知道如何修复

时间:2017-09-15 05:56:34

标签: shell unix

我写了一个shell脚本。 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

2 个答案:

答案 0 :(得分:0)

安全shellcripting的第一条规则:Always use quotes

你的循环执行一次,有命令替换(反引号中的东西)和$ feed变量被引用。就目前而言,那些人都在寻找麻烦!特别是,单词拆分和全局扩展。

如果你想要一些工具:

Shellcheck 会回答您的问题, Naziquote 会解决它(请参阅this问题)。

答案 1 :(得分:0)

如果您希望for循环只执行一次,请在“done”之前使用break语句

$ feed中的计数器 做 mkdir -p C:/ Users / spatro / Desktop / attachment_backup / $ counter echo“创建子文件夹”$ counter 打破 完成