我写了一个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
答案 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 打破 完成