我的问题是:我有这个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程序中插入这段代码。我试着在一行代码中重新编写all脚本,直接用shell测试它,它能正常工作,但是我在引号和转义方面遇到了问题,试图将它用作system()调用的参数。
你能给我建议一条出路吗?
谢谢你的帮助

最佳答案

如果您真的别无选择,只能传递一个二进制文件,而无法将shell脚本文件与二进制文件一起发送,请考虑以下内容:
在单个文本中包含脚本的内容
在程序执行期间,将文本的内容打印到临时文件中。你可能需要一些策略来产生一个唯一的文件名。
通过system()调用调用临时脚本
删除临时文件
不过,这是最后的办法。

关于c - C程序中的bash脚本代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5517421/

10-13 08:05