【问题标题】:Shell script is not running in ubuntuShell 脚本未在 ubuntu 中运行
【发布时间】:2017-10-16 11:40:30
【问题描述】:

我在 bash 脚本 encode.sh 中有以下脚本。

echo "1 configuration out of 936"
x265 incident_10d_384x288_25.yuv --input-res 384x288 --fps 25 str/incident_10d_384x288_25_QP_0_ON_B0.bin --tune psnr --psnr --preset medium --max-merge 5 --merange 64 --no-open-gop -I 48 -i 8 --tu-intra-depth 3 --tu-inter-depth 3 --input-depth 8 --aq-mode 0 --b-adapt 0 --scenecut 48 --ref 4 --sao --deblock=0:0 --bframes 0 --qp 0 --csv-log-level 2 --log-level 4 --csv csv/incident_10d_384x288_25_QP_0_ON_B0.csv > txt/1_incident_10d_384x288_25_QP_0_ON_B0.txt 2<&1 
echo "2 configuration out of 936"
x265 incident_10d_384x288_25.yuv --input-res 384x288 --fps 25 str/incident_10d_384x288_25_QP_1_ON_B0.bin --tune psnr --psnr --preset medium --max-merge 5 --merange 64 --no-open-gop -I 48 -i 8 --tu-intra-depth 3 --tu-inter-depth 3 --input-depth 8 --aq-mode 0 --b-adapt 0 --scenecut 48 --ref 4 --sao --deblock=0:0 --bframes 0 --qp 1 --csv-log-level 2 --log-level 4 --csv csv/incident_10d_384x288_25_QP_1_ON_B0.csv > txt/2_incident_10d_384x288_25_QP_1_ON_B0.txt 2<&1 
echo "3 configuration out of 936"
x265 incident_10d_384x288_25.yuv --input-res 384x288 --fps 25 str/incident_10d_384x288_25_QP_2_ON_B0.bin --tune psnr --psnr --preset medium --max-merge 5 --merange 64 --no-open-gop -I 48 -i 8 --tu-intra-depth 3 --tu-inter-depth 3 --input-depth 8 --aq-mode 0 --b-adapt 0 --scenecut 48 --ref 4 --sao --deblock=0:0 --bframes 0 --qp 2 --csv-log-level 2 --log-level 4 --csv csv/incident_10d_384x288_25_QP_2_ON_B0.csv > txt/3_incident_10d_384x288_25_QP_2_ON_B0.txt 2<&1 

我想使用&gt; txt/3_incident_10d_384x288_25_QP_2_ON_B0.txt 2&lt;&amp;1 将终端中每个编码的输出写入一个txt 文件。我使用python 2.7windows 创建了bash 脚本,我想在ubuntu 中运行它。

当我从 bash 脚本复制一行并在终端中运行它时,它正在工作。但是当我想从批处理文件中运行它时它不起作用。

我在终端中没有收到错误,但x265 编码器没有运行并出现警告:

[warning]: extra unused command arguments given <

我的 shell 脚本中有什么特殊字符吗?

你知道如何解决这个问题吗?

【问题讨论】:

  • 我想你正在寻找2&gt;&amp;1,将标准错误重定向到当前打开的标准输出。
  • 2&lt;&amp;1应该做什么?如果你想将标准输出重定向到标准错误,那就是1&gt;&amp;2,或者将标准错误重定向到标准输出:2&gt;&amp;1

标签: python bash shell ubuntu libx265


【解决方案1】:

输出重定向使用&gt;&amp;,而不是&lt;&amp;。那将是

2&gt;&amp;11&gt;&amp;2

(可能是第一个,将标准错误(2)重定向到标准输出(1))

有关 Stack Overflow 的相关问题:How can I redirect and append both stdout and stderr to a file with Bash?


编辑:

显然,您也有其他顺序的错误消息:

[警告]:给出额外未使用的命令参数 >`

这更令人惊讶。

根据我们在 cmets 中的小讨论,这是由于不正确的行尾处理造成的。可能整个脚本被视为只有一个大行,这可以解释 bash 惊讶地看到几个重定向。

有关信息,以防 cmets 被删除:使用 Notepad++ 菜单 Edit &gt; EOL Conversion 解决了该问题。更多信息在这里:EOL conversion in notepad ++

【讨论】:

  • 谢谢!我还必须将代码复制并粘贴到ubuntu 服务器的shell 文件中,而不仅仅是复制/粘贴它。可能来自 windows 的一些特殊字符也是一个潜在的问题。
  • @zinon 我不确定你的评论是否理解。这是您遇到的另一个问题吗?在这种情况下,我建议打开一个包含具体细节的新问题。
  • 只有当我在 Windows 中打开 bash 脚本,复制内容并将其粘贴到 linux 中的 bash 脚本文件中时,您提出的解决方案才有效。如果我将 bash 脚本文件从 windows 拖放到 linux,问题仍然存在。
  • @zinon 完全相同的问题吗?使用消息[warning]: extra unused command arguments given &lt; ?我不知道将&gt; 转换为&lt; 的编码问题,我建议您在拖放之前仔细检查您保存的文件。
  • 你是对的! Edit &gt; EOL conversion解决我的问题!
猜你喜欢
  • 2021-12-15
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 2011-10-20
  • 1970-01-01
  • 2020-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多