问题描述
我不怎么使用 bash 脚本,我正在尝试做这样的事情:
#!/bin/bash
wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-i686-static.tar.xz
tar xvf ffmpeg-git-i686-static.tar.xz
cd ./ffmpeg-git-20210501-i686-static/
cp ./ffmpeg-git-20210501-i686-static/ffmpeg /etc/bin
是否有变量或方法可以确定在脚本执行期间调用的提取文件夹。例如,在命令行中使用 bash 完成我会使用 cd ./ffmpeg(因为我知道它以 ffmpeg 开头)
有意义吗?
解决方法
事先无法知道目录结构,但可以在复制命令中使用通配符:
cp ./*/ffmpeg /etc/bin
虽然,我不建议在 /etc/bin
中安装 tarball 提取的可执行文件。
我会在 /usr/local/bin/
中放置一个符号链接:
#!/usr/bin/env sh
__opwd="$PWD"
trap 'cd "$__opwd"' EXIT ABRT INT
wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-i686-static.tar.xz || exit 1
# Create place where to install the unpacked archive
mkdir -p '/opt/ffmpeg-git-i686-static' || exit 1
# Unpack the archive
cd '/opt/ffmpeg-git-i686-static' || exit 1
tar xf "$__opwd/ffmpeg-git-i686-static.tar.xz" || exit 1
# Create a symbolic link from the ffmpeg command into `/usr/local/bin/`
ln -sf /opt/ffmpeg-git-i686-static/*/ffmpeg /usr/local/bin/