2013-01-07 51 views
0

我不斷運行像殼牌腳本來執行的nohup針對inputed文件名

nohup psql -d db -f foo1.sql >& foo1.out & 
nohup psql -d db -f foo2.sql >& foo2.out & 

命令我想知道如何創建的shell其作爲輸入的文件名參數等foo1.sql並運行上述命令。

我怎樣寫一個名爲test,因此命令./test foo1.sql將執行命令

nohup psql -d db -f foo1.sql >& foo1.out & 

回答

1

試試這個

#!/bin/bash 

outputFile="$(echo $1 | cut -d\. -f 1).out" 

nohup psql -d db -f "$1" >& "$outputFile" & 

它不與./test(foo1.sql)./test foo1.sql調用的腳本,這個問題後,如圖編輯。

+0

如果沒有通過擴展,可以進一步簡化: 「」「nohup的PSQL -d分貝-f $ 1.SQL>&$ 1.out & 「」」 – John

1

調用腳本是語法:

./stest foo1.sql 

有一個shell內置叫test,所以不要打電話給你的腳本。傳遞參數時不需要括號。

腳本很簡單:

if (($# < 1)) 
then 
    echo "Insufficient arguments" >&2 
    exit 1 
fi 

name=${1%%\.*} 
nohup psql -d db -f "$1" >& "$name.out" &