1

我有这个功能:

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

我的目标是能够做类似的事情find package foo。然而,看起来 thefoo没有作为参数传递给 pacman。我该如何解决?

4

3 回答 3

3

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

因此,假设您正在接受一些论点并且您知道要排除多少个论点,您可以像这样将其分割

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

使用它的一个示例,其中 (($#-2)) 中的 -2 是您希望从一开始就排除的参数数量。

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

哦,顺便说一句,我正在使用 zsh,所以 - 如果那里有不受支持的东西,我深表歉意。不这么认为。

于 2014-08-10T17:16:20.843 回答
1

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

寻找 () {
  案例“$1”在
  包裹)
      转移
      吃豆子 -Ss $@
      ;;
  文件)
      echo "查找文件"
      ;;
  *)
      echo "你找不到这样的东西。"
     ;;
  经社理事会
}
于 2013-04-06T18:06:13.040 回答
0

试试这个:

寻找 () {
  案例“$1”在
  包裹)
      吃豆子-SS $2
      ;;
  文件)
      echo "查找文件"
      ;;
  *)
      echo "你找不到这样的东西。"
     ;;
  经社理事会
}
于 2013-04-06T17:51:29.360 回答