bash - 选择文件时 bash 脚本中的意外标记“(”附近出现语法错误 [扩展]
问题描述
与此处类似的问题,但对于我的用例,我想放在 makefile 中。
#!/bin/bash
# Example:
# make run TEST_CASE="testbench.sv"
# make clean
compile:
vcs $(TEST_CASE) -sverilog;
run: compile
./simv
uvm_compile:
vcs $(TEST_CASE) -sverilog;
clean:
shopt -s extglob;
rm -v !(*.sv|*svh|"makefile");
make clean 中存在问题,我得到以下结果:
ycliao@localhost:[~/workspace/i2c_vip/uvm_practice]: make clean
shopt -s extglob;
rm -v !(*.sv|*svh|"makefile");
/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `rm -v !(*.sv|*svh|"makefile");'
make: *** [clean] Error 1
解决方案
据我了解makefile,每一行都在一个单独的shell中执行。因此,您需要添加一个续行来连接命令,以便它们在同一个shell 中执行:
SHELL = /bin/bash
# ...
clean:
shopt -s extglob; \
rm -v !(*.sv|*svh|"makefile");
这在 wikipedia Make 页面上的Example makefiles中得到了演示。
推荐阅读
- php - Hash::check in Laravel 5 不起作用,总是返回 false?
- oracle - SSIS 未与 OraOLEDB.Oracle.1 提供程序并行运行
- git - Jenkins - BitBucket git push:无法读取没有此类设备或地址的密码
- android - Ui Automator 截图
- python - 使用 keras 时在推理之间空闲 GPU
- vue.js - 将元素拖放到同一列表中的列表中。vue-smooth-dnd
- javascript - 当另一个元素处于活动状态时更改元素的样式
- mysql - 仅当与 Eloquent 中的 ID 匹配时才选择特定列
- python - 表单中的数据未写入 sqlite DB
- sqlite - 在 Mac 上编译 sqilte3