Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function UNIX:将参数传递给shell函数_Function_Shell_Unix - Fatal编程技术网

Function UNIX:将参数传递给shell函数

Function UNIX:将参数传递给shell函数,function,shell,unix,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

我有将文件打印到选定打印机的用户。 我不想为每台打印机创建一个函数,我只希望有一个函数,并传递要打印的文件和想要的打印机。 当然,下面的代码不起作用。 有人能给我指出正确的解决办法吗

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
}

您可以使用
shift
向左移动位置参数。您可以使用
for var迭代位置参数;做完成

#!/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

您可以使用
shift
向左移动位置参数。您可以使用
for var迭代位置参数;做完成

#!/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

您需要在使用外壳函数之前定义它们。您需要在使用它们之前定义外壳函数。我还发现简单地调用Print“$list2”$printer2有效(添加了“”),我还发现简单地调用Print“$list2”$printer2有效(添加了“”)