bash 在 bash 脚本中添加 '(' 字符的语法错误
bash syntax error for adding '(' character in bash script
我是运行在Linux命令行下的命令
cp !(non_*).txt some_folder/
它按预期工作(即,将当前文件夹中除以 'non_' 开头的文件之外的所有 *.txt 文件复制到 some_folder。)
但是当同一行被添加到脚本文件并执行它时
./script.sh
它抛出以下错误。
./script.sh: line 1: syntax error near unexpected token `('
./script.sh: line 1: ` cp !(oam_cfg*).txt kk/'
这里可以更正什么?
仅供参考:我正在尝试将当前文件夹中除以 'non_' 开头的文件之外的所有 *.txt 文件复制到 some_folder。
正如 Jetchisel 一个小时前评论的那样,您需要打开扩展的 globbing。
一个例子:
$: touch foo.txt bar.txt # create a file
$: echo +(foo*txt) # use an extended glob, which fails on syntax
bash: syntax error near unexpected token `('
$: shopt -s extglob # turn extended globbing *ON*
$: echo +(foo*txt) # same command now succeeds
foo.txt
$: echo !(foo).txt # negative works as well
bar.txt
我是运行在Linux命令行下的命令
cp !(non_*).txt some_folder/
它按预期工作(即,将当前文件夹中除以 'non_' 开头的文件之外的所有 *.txt 文件复制到 some_folder。)
但是当同一行被添加到脚本文件并执行它时
./script.sh
它抛出以下错误。
./script.sh: line 1: syntax error near unexpected token `('
./script.sh: line 1: ` cp !(oam_cfg*).txt kk/'
这里可以更正什么?
仅供参考:我正在尝试将当前文件夹中除以 'non_' 开头的文件之外的所有 *.txt 文件复制到 some_folder。
正如 Jetchisel 一个小时前评论的那样,您需要打开扩展的 globbing。
一个例子:
$: touch foo.txt bar.txt # create a file
$: echo +(foo*txt) # use an extended glob, which fails on syntax
bash: syntax error near unexpected token `('
$: shopt -s extglob # turn extended globbing *ON*
$: echo +(foo*txt) # same command now succeeds
foo.txt
$: echo !(foo).txt # negative works as well
bar.txt