我有这个功能:
find () {
case "$1" in
package)
pacman -Ss
;;
file)
echo "Find file"
;;
*)
echo "You cannot find something like this."
;;
esac
}
我的目标是能够做像find package foo
这样的事情。但是看起来foo
没有作为参数传递给pacman。我该如何解决这个问题?
答案 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 }