1

嗨,我有一个关于向我编写的这个简单的 bash 脚本提供输入的问题。它所做的只是在我的编译操作中添加一组标志,以节省我每次都必须自己编写它们。我可以使用echo myprogram.c -o myprogram -llibrary | ./Compile. 但是我找不到以我期望的方式运行它的方法,./Compile < myprogram.c -o myprogram -llibrary 我尝试了一些引号和括号的组合无济于事,谁能告诉我如何提供与 echo 产生的相同的输入使用重定向输入命令。

#!/bin/bash
# File name Compile
#Shortcut to compile with all the required flags, name defaulting to
#first input ending in .c
echo "Enter inputs: "
read inputs
gcc -Wall -W -pedantic -std=c89 -g -O $inputs
exit 0
4

2 回答 2

2

您可以使用进程替换

./Compile < <( echo myprogram.c -o myprogram -llibrary )

上面的行产生与原始命令相同的结果:

echo myprogram.c -o myprogram -llibrary | ./Compile
于 2013-02-18T13:49:50.297 回答
2

只需将您的外壳更改为:

#!/bin/bash
gcc -Wall -W -pedantic -std=c89 -g -O "$@"

然后你只能写(不需要重定向):

./Compile myprogram.c -o myprogram -llibrary

顺便说一句,不要明确写exit 0在这个 shell 的末尾。成功时是多余gcc的,gcc失败时是错误的(退出代码1会被覆盖)。

于 2013-02-18T13:57:15.537 回答