我正在使用&
运行多个命令:
curl "url1" --output /dev/null 2>> out &
curl "url1" --output /dev/null 2>> out &
wait
这不起作用,因为输出行是交错的。我希望每个curl
保持其输出,直到完成。怎么做?
据我所知,我可以使用临时文件,连接在一起并在之后删除。还有更好的方法吗?
curl "url1" --output /dev/null 2>> out1 &
curl "url1" --output /dev/null 2>> out2 &
wait
答案 0 :(得分:3)
您可以在子shell中执行每个<?php
$productId = $this->getProduct_id();
$product = Mage::getModel('catalog/product')->load($productId); //load product
?>
<div class="product">
<a href="<?php echo $product->getProductUrl() ?>" >
<img class="product-img" src="<?php echo $this->helper('catalog/image')->init($product, 'image'); ?>"alt="<?php echo $this->htmlEscape($product->getName()) ?>" />
</a>
</div>
<div class="product-detail">
<P><?php // echo $this->htmlEscape($product->getName()) ?>
<?php $prod_name = $this->htmlEscape($product->getName()); ?>
<?php
$count_str = strlen($prod_name);
if ($count_str < 40) {
echo $prod_name;
} else {
$offset = 0;
$length = 41;
$prod_name = html_entity_decode($prod_name);
echo htmlentities(mb_substr($prod_name,0,$length,'utf-8')). "...";;
}
?>
</P>
<!--?php $price = $product->getPrice() ; ?-->
<?php $_product = Mage::getModel('catalog/product')->load($product->getId());
$productBlock = $this->getLayout()->createBlock('catalog/product_price');
?>
<span>
<?php echo $productBlock->getPriceHtml($_product); ?>
<?php $tier_price = end($_product->getTierPrice());
if($tier_price !='0'){ ?>
<span>As Low As:</span>
<?php
echo " ₹ ".number_format( $tier_price['price']);
} ?>
<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart"
onclick="setLocation('<?php echo Mage::helper('checkout/cart')->getAddUrl($product); ?>')">
</span>
</div>
:
curl
echo "$(curl "url1" 2>&1 >/dev/null)" >> out &
echo "$(curl "url2" 2>&1 >/dev/null)" >> out &
wait
将stderr重定向到标准输出。
是的,您可以使用subshell命令2>&1
嵌套""
:)
下行:这可能无法保留输出顺序。如果第二个$()
首先完成,则首先输出。
为了保持订购的输出,您可以使用curl
和cat
。 Bash的进程替换 <()
从<(COMMAND)
的输出创建一个临时文件(实际上,它是一个FIFO),但是你没有必须关心该临时文件的名称,创建和删除。
COMMAND
cat \
<(curl "url1" 2>&1 >/dev/null) \
<(curl "url2" 2>&1 >/dev/null) \
> out
转义换行符。没有\
,一切都必须写在一行。