我正在尝试编写一个程序,该程序将从 github 获取一个对象,而不克隆整个存储库。最后一行不起作用,给了我一个Syntax error: "(" unexpected
.它应该删除除此之外的所有文件/目录。
#!/bin/sh
object=$2 #sets item not to remove as second argument
address=$1 #sets github address (github.com/user/repo)
git clone $1 #clones it
location="${address##*/}" #gets part after last backslash
cd $location #cd's into it
#Syntax error: "(" unexpected
rm -rf !("$object")
答案1
默认情况下不启用extglob 语法bash
,这就是为您提供!(...)
语法的内容。如果需要,您必须首先将 shebang 更改为使用 bash 来打开它
#! /bin/bash
然后通过添加打开 extglob
shopt -s extglob
该行之前的某处