2014-07-09 93 views
0

目前我有一個這樣的腳本。此腳本的預期用途是使用Getlastreport函數並在文件夾中檢索最新報告的名稱。文件夾名稱通常是每晚隨機生成的數字。我想調用變量Getlastreport並將其放入Maxcashfunc中。Unix。調用另一個變量內的變量

例子:

Getlast report = 3473843. 

使用MAXcashfunc的grep -r 「最大*」/大衛/報告/ $ Getlastreport [數3473843應該在這裏]/「Moneyfromyesterday.csv」> Report`

腳本:

#!bin/bash 

Getlastreport() 
{ 
cd /David/reports/ | ls -l -rt | tail -1 | cut -d' ' -f10- 
} 

MAXcashfunc() 
{ 
grep -r "Max*" /David/reports/$Getlastreport/"Moneyfromyesterday.csv" > Report 
} 

##call maxcash func 
MAXcashfunc 
+0

你真的要管'cd'成'ls'的輸出? 's/|/\&\&'' –

+0

爲什麼還要用'-l'打擾後面的刪除以刪除'-l'添加的所有內容?嘗試更簡單:'cd/David/reports && ls -tr | tail -1' –

+0

你爲什麼要對文件進行遞歸grep?遞歸只對目錄有用,但是如果Getlastreport沒有做你的想法(例如,如果它引入了空格),那麼你可能會做一個你不想要的遞歸grep。 –

回答

1

您可以使用:

MAXcashfunc() { 
    grep -r "Max" /David/reports/`Getlastreport`/"Moneyfromyesterday.csv" > Report 
} 

`Getlastreport` - Call Getlastreport and get its output. 
+0

沒有。不工作。它只是打印出/David/reports/'Getlastreport'/"Moneyfromyesterday.csv這讓我到一個沒有文件'Getlastreport'是假設打印出最後一個被修改的文件,並給我一個像343432 – Ray

+0

顯示我輸出'Getlastreport | cat -vte'命令 – anubhava

0

如果我按照你的問題,你可以使用

function Getlastreport() { 
    cd /David/reports/ | ls -l -rt | tail -1 | cut -d' ' -f10- 
} 
function MAXcashfunc() { 
    grep -r "Max" /David/reports/$(Getlastreport)/"Moneyfromyesterday.csv" > Report 
} 
+0

這似乎是將我的腳本發送到等待命令階段,這是我嘗試使用它的第一種方式,也是我學習它的方式。不知道爲什麼它不起作用。 – Ray

+0

我不認爲你的cut命令是正確的,這個函數並不僅僅返回文件名。 –