首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在“如果声明”中允许这样做吗?

在“如果声明”中允许这样做吗?
EN

Unix & Linux用户
提问于 2019-05-25 02:23:51
回答 2查看 140关注 0票数 -1
代码语言:javascript
运行
复制
# optional cropping
if [ "$1" == "cropit" ]; then
   ITS_CROP_TIME=
   mkdir cropped; for i in *.mp4; do ffmpeg -i "$i" -filter:v "crop=1920:980:0:-100" cropped/"${i%.*}.mp4"
   rm -r *.mp4
   cd cropped
   cp -r *.mp4 ../
fi
# optional cropping

是否允许以这种方式使用ITS_CROP_TIME=字符串(以捕获下面代码的输出)?如果我现在将这个变量放在我的脚本中的某个地方,那么这些命令会在变量定义处执行吗?

那这个呢?这个能行吗?

代码语言:javascript
运行
复制
if [ "$1" == "cropit" ]; then
   ITS_CROP_TIME=mkdir cropped; for i in *.mp4; do ffmpeg -i "$i" -filter:v "crop=1920:980:0:-100" cropped/"${i%.*}.mp4"; rm -r *.mp4; cd cropped; cp -r *.mp4 ../
fi
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2019-05-25 03:54:26

代码语言:javascript
运行
复制
#!/bin/bash
set -e
if [ "$1" == "cropit" ]; then
   ITS_CROP_TIME="$(
        mkdir cropped;
        for i in *.mp4; do 
           ffmpeg -i "$i" -filter:v "crop=1920:980:0:-100" cropped/"${i%.*}.mp4"
        done
        rm -r ./*.mp4
        cd cropped
        cp -r ./*.mp4 ../
    )"
fi

https://www.shellcheck.net/

票数 -1
EN

Unix & Linux用户

发布于 2019-05-25 08:20:06

我假设您希望将变量ITS_CROP_TIME设置为一个命令集合,以便以后运行?

这就是功能的作用:

代码语言:javascript
运行
复制
crop_all_in_dir () {
    local source_dir="$1"
    local dest_dir="$2"

    mkdir -p "$dest_dir"

    for file in "$source_dir"/*.mp4; do
        [ ! -f "$file" ] && continue
        ffmpeg -i "$file" -filter:v "crop=1920:980:0:-100" "$dest_dir/(basename "${file%.*}").mp4"
    done
}

然后,您可能希望在脚本的后面将其称为

代码语言:javascript
运行
复制
# optional cropping
if [ "$1" = "cropit" ]; then
    crop_all_in_dir . cropped
fi

即,裁剪当前目录中的所有*.mp4文件,并将裁剪的文件放在cropped目录(当前目录的子目录)中,如果输出目录还不存在,则创建输出目录。

该函数以非破坏性的方式进行裁剪,因此任何替换原始文件(您的cp等)都是如此。将在该职能之外完成。

票数 -2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/520982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档