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.7
从 windows
创建 bash 脚本,我想 运行 它在 ubuntu
.
当我从 bash 脚本中复制一行并将其 运行 复制到终端时,它正在运行。但是当我想从批处理文件中 运行 它时,它不起作用。
我在终端中没有收到错误,但 x265
编码器没有 运行 并显示警告:
[warning]: extra unused command arguments given <
我的shell脚本中有什么特殊字符吗?
你知道如何解决这个问题吗?
输出重定向使用 >&
,而不是 <&
。那将是
2>&1
或 1>&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 ++
我在 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.7
从 windows
创建 bash 脚本,我想 运行 它在 ubuntu
.
当我从 bash 脚本中复制一行并将其 运行 复制到终端时,它正在运行。但是当我想从批处理文件中 运行 它时,它不起作用。
我在终端中没有收到错误,但 x265
编码器没有 运行 并显示警告:
[warning]: extra unused command arguments given <
我的shell脚本中有什么特殊字符吗?
你知道如何解决这个问题吗?
输出重定向使用 >&
,而不是 <&
。那将是
2>&1
或 1>&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 ++