我不断地运行命令,比如
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 &
试试这个
#!/bin/bash
outputFile="$(echo $1 | cut -d\. -f 1).out"
nohup psql -d db -f "$1" >& "$outputFile" &
./test(foo1.sql)
它不是用but调用的./test foo1.sql
,如编辑问题后所示。
调用脚本的语法是:
./stest foo1.sql
有一个内置的外壳叫做test
,所以不要调用你的脚本。传递参数时不需要括号。
脚本非常简单:
if (( $# < 1 ))
then
echo "Insufficient arguments" >&2
exit 1
fi
name=${1%%\.*}
nohup psql -d db -f "$1" >& "$name.out" &