UNIX:将参数传递给shell函数

时间:2017-02-08 15:45:35

标签: function shell unix

我有用户将文件打印到选定的打印机。 我没有为每台打印机创建一个功能,而是希望只有一个并将文件传递给打印和所需的打印机。 当然,以下代码不起作用。 有人能指出我正确的解决方案吗?

list2=`ls /spooldocs/sch/sch* |sort`
Print $list2 $printer2

Print(){
  for job in $1 ; do
    if [[ $job == *503374*.pcl ]]; then
      lp -d$2 $job
      lp -d$2 $job
    fi
    lp -d$2 $job
    lp -d$2 $job
    lp -d$2 $job
    lp -d$2 $job
  done
}

1 个答案:

答案 0 :(得分:0)

您可以使用shift将位置参数移到左侧。您可以使用for var; do ... ; done迭代位置参数:

#!/bin/sh

Print () {
   printer=$1
   shift
   for job; do
     echo lp "-d$printer" "$job"
   done
}

Print laserjet foo bar baz

示例运行:

$ ./x.sh
lp -dlaserjet foo
lp -dlaserjet bar
lp -dlaserjet baz