我的问题如下:我有这个bash脚本:
#!/bin/bash
IFSBAK=$IFS
if [ "$TXTEXT" = "" ];
then
CMD="find . -iname \"*.txt\" -or -iname \"*.text\""
else
CMDTEMP="find . "
IFS=":"
for i in $TXTEXT
do
CMDTEMP="${CMDTEMP} -iname \"*.${i}\" -or"
done
IFS=$IFSBAK
CMD=${CMDTEMP%-or}
fi
FILES=$(eval $CMD)
OUTPUT=$1
for f in $FILES
do
VAR=$(grep -ae [a-zA-Z0-9] "$f" | tr -cs "[:alnum:]" "\n")
IFS=$' \n\t-?=!*][.\",();\'\`\´:'
for v in $VAR
do
echo $v >> "${OUTPUT}"
done
IFS=$' \n\t'
done
我需要在C程序中插入此代码。我试图在一行上重新编写所有脚本直接用shell测试它并且它可以正常工作,但是我遇到引号问题并且尝试使用它作为system()调用的参数。 你能建议我出路吗?
感谢您的帮助
答案 0 :(得分:4)
如果您真的别无选择,只能提供单个二进制文件而无法发送带有二进制文件的shell脚本文件,请考虑以下内容:
system()
调用但是,请将此视为最后的手段。
答案 1 :(得分:3)
将其放入shell脚本并从C代码中调用shell脚本。更容易维护恕我直言。
答案 2 :(得分:0)
#define SHELLSCRIPT "
...
write your shell script code here
...
"
int main()
{
system(SHELLSCRIPT);
return 0;
//put the bash to C program
}