簡體   English   中英

C程序中的bash腳本代碼

[英]bash script code inside C program

我的問題如下:我有這個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()調用的參數。 你能建議我出路嗎?

謝謝您的幫助

如果您真的只好交付一個二進制文件,而又無法附帶該二進制文件,則請考慮以下事項:

  1. 在單個文字中包含腳本的內容
  2. 在程序執行期間,將文字內容打印到一個臨時文件中。 您可能需要一些策略來提供唯一的文件名。
  3. 通過system()調用來調用臨時腳本
  4. 刪除臨時文件

但是,將此作為最后的選擇。

將其放入外殼腳本中,然后從您的C代碼中調用外殼腳本。 維護恕我直言要容易得多。

#define SHELLSCRIPT "
...
write your shell script code here
...
"



   int main()
    {

        system(SHELLSCRIPT);
        return 0;
        //put the bash to C program 
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM