【问题标题】:tee command creates empty filetee 命令创建空文件
【发布时间】:2014-01-13 20:18:19
【问题描述】:

您好,我有以下生成的股票列表,并将其放在名为 awk_1 的文件中

dfs
fsd
dsf
sdf

然后我运行以下一个生成正确 ULR 链接的班轮

while read i ; do 
  echo $(http://uk.finance.yahoo.com/echartss=$i#symbol=$i\;range=my\;compare=\;indicator=volume\;charttype\=area\;crosshair\=on\;ohlcvalues\=0\;logscale\=off\;source\=undefined\;) tee stock_urls; 
done < awk_1 

但是不把输出放在名为 stock_urls 的文件中吗?

它还会在屏幕上生成奇怪的输出,下面是我到标准输出的一小部分输出。它把“./large_cap_stocks.sh: 51: ./large_cap_stocks.sh:”放在前面,把“not found”放在最后,为什么会这样。

我一直在搜索为什么这不起作用任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 您是否尝试使用 $( ) 作为引号?您似乎正在尝试将 URL 作为命令运行。如果您希望 echo 的输出成为 tee 的输入,您将需要一个管道。
  • @user1380599 将代码块和输入文件从行首保留4个空格(选择所有代码并按{}),因此它显示为代码,否则格式会被破坏并且代码几乎不可读(很难按原样阅读)

标签: bash list loops tee


【解决方案1】:

你可能打算这样写:

while read i; do
    echo "http://uk.finance.yahoo.com/echarts?s=$i#symbol=$i\;range=my\;compare=\;indicator=volume\;charttype\=area\;crosshair\=on\;ohlcvalues\=0\;logscale\=off\;source\=undefined\;"
done < awk_1 | tee stock_urls

即:

  • echo 命令中,使用"..." 引用您的文本,而不是$(...),这是别的东西
  • 使用管道运算符| 将输出传递给tee,您可以通过这种方式管道整个循环,无需为单独的echo 行做管道。

【讨论】:

  • 如果您还想存储 stderr,请将 | 更改为 |&amp; (bash 4+) 或 2&gt;&amp;1 |(不知道用户在这种情况下是否这样做,但可能会有用)。
  • @user1380599 单击答案旁边的复选标记,如果此答案解决了您的问题,则将其标记为已解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
  • 2015-07-12
  • 2016-07-21
  • 2021-08-22
  • 2018-03-25
  • 1970-01-01
相关资源
最近更新 更多