1

私は常に次のようなコマンドを実行しています

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

foo1.sqlのようなファイル名パラメーターを入力として受け取り、上記のコマンドを実行するシェルスクリプトを作成する方法を考えていました。

./test foo1.sqlコマンドがコマンドを実行するように、testというスクリプトを作成するにはどうすればよいですか。

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

2 に答える 2

2

これを試して

#!/bin/bash

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

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

質問が編集された後に示されているように、./test(foo1.sql)butで呼び出されません。./test foo1.sql

于 2013-01-07T19:53:03.660 に答える
2

スクリプトを呼び出すための構文は次のとおりです。

./stest foo1.sql

と呼ばれるシェル組み込みがあるtestので、スクリプトをそれと呼ばないでください。パラメータを渡すときにかっこは必要ありません。

スクリプトは非常に単純です。

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

name=${1%%\.*}
nohup psql -d db -f "$1" >& "$name.out" &
于 2013-01-07T19:59:37.153 に答える