Shell 脚本不在 ubuntu 中 运行

Shell script is not running in ubuntu

我在 bash 脚本 encode.sh 中有以下脚本 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 

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

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

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

[warning]: extra unused command arguments given <

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

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

输出重定向使用 >&,而不是 <&。那将是

2>&11>&2

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

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


编辑:

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

[warning]: extra unused command arguments given >`

这更令人惊讶。

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

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