Programa em C chamando scripts
Autor: Eduardo A Bortolini | Publicado: 2011-09-04T14:33:00-03:00

Olá, hoje vamos trabalhar com programas em C em conjunto com scripts. O objetivo é construir dois scripts, um para criar um arquivo e outro para deletar um arquivo. Esses dois scripts serão chamados pelo nosso programa escrito em c, que será basicamente um MENU que irá usar o comando system para chamada dos scripts.

Primeiro passo - Criação dos scripts
Nome:&nbsp;ArqExiste.sh
Funcionalidade: Ele é quem vai criar o arquivo de acordo com o nome fornecido pelo usuário.
Código:

#!/bin/bash

if [ -a $1 ]
then
	echo "O Arquivo ja Existe!!!"
	echo "Voce deseja criar um novo? (s/n)"
	read op
	if [ $op == "s" ]
	then
		rm -f $1;
		touch $1;
	fi
else
	touch $1
	echo "Arquivo criado!!!"
fi

Nosso segundo script
Nome:&nbsp;DeletaArq.sh
Funcionalidade: Excluir o arquivo
Código:

#!/bin/bash
if [ -a $1 ]
then
	rm -f $1
else
	echo "Arquivo nao Existe!!!"	
fi

Na linha de comando você deve fornecer permissão de execução para esses arquivos, então digitiechmod +x&nbsp;DeletaArq.shchmod +x&nbsp;ArqExiste.sh
Bom, agora vamos ao nosso programa em c:#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;string.h&gt;#define MAXOP 4int menuOpcoes(){&nbsp; &nbsp; int op; //Armazena opcao seelecionada&nbsp; &nbsp; printf("\n\t*****************************\n");&nbsp; &nbsp; printf("1 - Criar Arquivo;\n");&nbsp; &nbsp; printf("2 - Listar Aqrquivos;\n");&nbsp; &nbsp; printf("3 - Remover Arquivo;\n");&nbsp; &nbsp; printf("Escolha sua opcao:\t");&nbsp; &nbsp; scanf("%d",&amp;op);&nbsp; &nbsp; return op;}
int main(){&nbsp; &nbsp; int ret; //Armazena valores de retorno de comandos&nbsp; &nbsp; int op;&nbsp; &nbsp; char str[50];&nbsp; &nbsp; char buffer[256];
&nbsp; &nbsp; do&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; op = menuOpcoes();&nbsp; &nbsp; &nbsp; &nbsp; switch(op)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; case 1: printf("\n\tScript para criacao de arquivo\n\tNome do arquivo:\t");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scanf("%s",str);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sprintf(buffer, "./ArqExiste.sh %s",str);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ret = system(buffer);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; case 2: printf("\n\t****Arquivos do diretÃ³rio****\n");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ret = system("ls");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; case 3: printf("\n\tScript para excluir arquivo\n\tNome do arquivo:\t");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scanf("%s",str);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sprintf(buffer, "./DeletaArq.sh %s",str);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ret = system(buffer);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;

&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; }while(op &lt; MAXOP);&nbsp; &nbsp; return 0;}