Новичок в сценариях bash, поэтому у меня возникла небольшая проблема с прорезыванием зубов, и мне было интересно, может ли кто-нибудь устранить некоторые проблемы, с которыми я столкнулся. У меня есть простой файл C с именем test, который создает оболочку, как показано ниже:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main()
{
execl("/bin/sh", "/bin/sh", (void *) NULL);
perror("exec");
return 1;
}
Я хочу создать сценарий bash для выполнения этого файла, который я сделал ниже, но затем при выполнении я хочу отправить команды в оболочку, которую создает двоичный файл - возможно ли это? Я пытаюсь сделать следующее безрезультатно:
#!bin/bash
/var/testfolder/test; # execute the test c file to spawn the shell
??? #don't know how to pass commands to the new shell created :(
chmod u+x <generated script file>
, а затем выполнить его с помощью./<generated script file>
, если он сгенерирован в текущем каталоге. Этот сценарий будет выполняться в дочернем процессе оболочки. - person Sylvain Bugat   schedule 22.03.2015/bin/sh
НЕ обязательно является оболочкой bash, и даже если она реализована bash в вашей системе, bash работает в режиме совместимости, который пытается имитировать традиционное поведениеsh
. Если вы действительно хотите использовать команды, специфичные дляbash
, запустите/bin/bash
(или эквивалент, в зависимости от того, где в вашей системе находится bash). Если желательна переносимость, используйте/bin/sh
и избегайте использования функций, эксклюзивных для bash. - person ghoti   schedule 23.03.2015