参数

时间:2017-02-15 09:46:14

标签: linux bash

我想创建一个bash命令来自动将文件从我的公共Dropbox更新到我的本地计算机。

例如: 我本地/home/john/Directory1/file1.dat上的文件也位于我的保管箱云端,可通过以下链接访问:https://dl.dropboxusercontent.com/u/xxxxxx/Directory1/file1.dat

[顺便说一下,这意味着Directory1 /是我公共/ dropbox目录根目录]。所以我想创建一个名为MyNewFunction的函数:

cd /home/john/Directory1/
MyNewFunction file1.dat

和MyNewFunction将执行:

wget -N https://dl.dropboxusercontent.com/u/xxxxxx/Directory1/file1.dat

[ - N设置为更新并覆盖file1.dat]

因此,我需要选择当前目录名“Directory1”来创建https链接

3 个答案:

答案 0 :(得分:0)

只要命令在您拥有该文件的目录中运行,我认为应该这样做:

dirName=$(basename `pwd`)
wget -N "https://dl.dropboxusercontent.com/u/xxxxxx/${dirName}/file1.dat"

答案 1 :(得分:0)

这是更好的

wget -N "https://dl.dropboxusercontent.com/u/xxxxxx/$(basename `pwd`)/file1.dat"

答案 2 :(得分:0)

当前目录的完整路径位于PWD变量中。您可以使用bash的字符串操作来仅获取当前目录的名称:

dir=${PWD##*/}

然后,因为file1.dat是第一个参数:

wget -N "https://dl.dropboxusercontent.com/u/xxxxxx/${dir}/$1"

所以,函数将是:

MyNewFunction () {
    local dir=${PWD##*/}
    wget -N "https://dl.dropboxusercontent.com/u/xxxxxx/${dir}/$1"
}

或者:

MyNewFunction () {
    wget -N "https://dl.dropboxusercontent.com/u/xxxxxx/${PWD##*/}/$1"
}