我有一个字符串
mystring =" 01-MAY-11 12.07.38.199 PM:31-APR-13 12.07.38.199 PM: 31-JUN-14 12.07.38.199 PM:"
我正在将字符串迭代为
IFS=:
for item in $mystring
do
echo "expdp query" "$item"
done
我的输出是:
expdp查询01-MAY-11 12.07.38.199 PM
expdp查询
31-APR-13 12.07.38.199 PM
expdp查询
31-JUN-14 12.07.38.199 PM
但是我希望得到如下所示的输出
expdp查询01-MAY-11 12.07.38.199 PM
expdp查询31-APR-13 12.07.38.199 PM
expdp查询31-JUN-14 12.07.38.199 PM
请建议在for循环中迭代时我必须提供哪些参数
答案 0 :(得分:0)
file.sh:
mystring="01-MAY-11 12.07.38.199 PM: 31-APR-13 12.07.38.199 PM: 31-JUN-14 12.07.38.199 PM:"
IFS=:
first=1
for item in $mystring
do
if [[ $first == 1 ]]; then
echo "expdp query" " $item"
first=0
else
echo "expdp query" "$item"
fi
done
./ test.sh:
expdp query 01-MAY-11 12.07.38.199 PM
expdp query 31-APR-13 12.07.38.199 PM
expdp query 31-JUN-14 12.07.38.199 PM
答案 1 :(得分:0)
您可以通过故意省略引用来添加GenericAvroSerde
以消除字符串中的换行符。
但是现在我们知道了换行符的来源,使用mystring=$( echo ${mystring} )
似乎是更好的选择。
while read
您可以从查询中删除sqlplus ...... | while read -r item ; do
echo "expdp query" "$item"
done
。
如果您需要的时间超过:
,请尽量避免使用Bash Pitfall #8(或更长的说明BashFAQ#24)