2017-02-15 185 views
1

我想創建一個bash命令來自動將我的公共保管箱中的文件更新到本地機器。帶參數的Bash函數

例如: 我本地/home/john/Directory1/file1.dat文件也位於我的Dropbox雲和方便使用的鏈接: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鏈接

+1

pwd命令?它不明確是什麼問題 – tolanj

+0

不只是在你的機器上安裝Dropbox並打開自動同步解決這個問題?爲什麼你想要一個bash腳本的東西dropbox桌面應用程序可以做到這一點? – sa77

+0

@ sa77,我的服務器中不允許使用Dropbox ...但是這樣做會更容易 –

回答

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" 
} 
0

只要該命令在您擁有該文件的目錄內運行,就應該做到這一點,我想:

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

pwd本身不起作用,因爲它將具有完整路徑 –

+1

爲真。我做了一個更正。這應該工作 – anacron

0

這是更好的

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