【发布时间】:2014-03-06 08:48:07
【问题描述】:
我必须编译一些mysql c api代码并且厌倦了在命令行中编写所有这些:
gcc main.c -o main `mysql_config --cflags --libs`
我在 bash 中编写了一个 shell 脚本,并在 bash 中传递了位置参数:
gcc $1 -o ${"$1":0:2} 'mysql_config --cflags --libs' 但这不起作用。我收到错误消息:./compile: line 2: ${"$1":0:-2}: bad substitution。有人可以告诉我我做错了什么吗?
我让它工作的唯一方法是分配一个新变量:
filename=$1;
gcc $filename -o ${filename:0:-2} `mysql_config --cflags --libs`
这是唯一的方法还是有办法解决我在第一种情况下做错的事情?
【问题讨论】:
-
是时候开始了解
make...或任何其他构建管理工具... -
@twalberg 我认为
make只适用于大型程序。这只是一个小测试程序。谢谢。 -
虽然它确实为大型复杂构建提供了最大的好处,但它对于小型单源构建也非常有效......
-
@twalberg 你能告诉我在这种情况下它是如何工作的吗?
-
在下面发布了一个答案以保持格式。注意
gcc行开头的间距必须是单个制表符。
标签: bash shell command-line-arguments