如何将一片参数传递给zsh中的命令?

时间:2013-04-06 17:41:33

标签: zsh zshrc

我有这个功能:

find () {
  case "$1" in
  package)
      pacman -Ss
      ;;
  file)
      echo "Find file"
      ;;
  *)
      echo "You cannot find something like this."
     ;;
  esac
}

我的目标是能够做像find package foo这样的事情。但是看起来foo没有作为参数传递给pacman。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

为不同数量的给定参数提供了以下简单的解决方案,假设您想要将前两个字符串切片。

所以,假设你正在接受一些争论而且你知道你想要排除多少个论点,你可以像这样将其分割出来

#!/bin/bash
array=${@: (($#-2)),-1}
for element in $array; do
    echo $element
done

使用此示例,其中-2 in(($# - 2))是您希望从头开始排除的参数数量。

$ ./script.sh some arguments given to the script
$ given
$ to
$ the
$ script

哦,我正在使用zsh btw,所以 - 道歉,如果有不支持的东西。不这么认为。

答案 1 :(得分:1)

这就是你需要的。试试这个:

find () {
  case "$1" in
  package)
      shift
      pacman -Ss $@
      ;;
  file)
      echo "Find file"
      ;;
  *)
      echo "You cannot find something like this."
     ;;
  esac
}

答案 2 :(得分:0)

试试这个:

find () {
  case "$1" in
  package)
      pacman -Ss $2
      ;;
  file)
      echo "Find file"
      ;;
  *)
      echo "You cannot find something like this."
     ;;
  esac
}