1

我不断地运行命令,比如

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

我想知道如何创建一个 shellscript,它将文件名参数(如 foo1.sql)作为输入并运行上面的命令。

如何编写一个名为 test 的脚本,以便该命令./test foo1.sql将执行该命令

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 回答