Я решил записать причину программы C, я скучал.
Необходимо, вероятно, добавить контроль ввода, но кроме это все установлено.
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char c = argv[1][0];
char * line = NULL;
size_t len = 0;
while (getline(&line, &len, stdin) != -1)
{
int count = 0;
char * s = line;
while (*s) if(*s++ == c) count++;
printf("%d\n",count);
}
if(line) free(line);
}
Ошибочный выход. Больше флагов
Если будет ошибка, то она выйдет сразу же.
$? статус выхода прошлой команды. В Linux статус выхода 0 средств, что команда была успешна. Любое другое состояние означало бы, что ошибка произошла.
egrep "^username"/etc/passwd>/dev/null искал бы имя пользователя под/etc/passwd файлом. Если это находит его затем $ статуса выхода? будет равно 0. Если это не найдет это, то статус выхода будет чем-то еще (не 0), следовательно Вы "отзоветесь эхом, не существует".
Все переключатели командной строки удара документируются в man bash
.
-e Exit immediately if a pipeline (which may consist of a single simple command), a subshell command enclosed in parentheses, or one of the commands executed as part of a command list enclosed by braces (see SHELL GRAMMAR above) exits with a non-zero status. The shell does not exit if the command that fails is part of the command list immediately following a while or until keyword, part of the test following the if or elif reserved words, part of any command executed in a && or || list except the command following the final && or ||, any command in a pipeline but the last, or if the command's return value is being inverted with !. A trap on ERR, if set, is executed before the shell exits. This option applies to the shell environment and each subshell envi- ronment separately (see COMMAND EXECUTION ENVIRONMENT above), and may cause subshells to exit before executing all the commands in the subshell.
set
требуемый, хотя? :-/
–
30.06.2011, 23:43
Ваш сценарий является неправильным, потому что
egrep "^username" /etc/passwd >/dev/null
if[ $? -eq 0 ]
then
#echo "doesn't exist" # WRONG
echo "the USER EXISTS"
fi
статус выхода 0 - средний - все в порядке, в случае grep, среднего "хорошо, нашел строку". статус выхода! = 0 средних, что-то неправильно, в случае среднего grep 1, "не найденный", 2 средних "не могут открыть вход"...
if egrep "^username" /etc/passwd >/dev/null
. – 30.06.2011, 22:50set
требуемый, хотя? :-/ – 30.06.2011, 23:44-e
дан для избиения как параметр командной строки. Все опции, перечисленные подset
также приняты, избивают его командную строку – отмечают первое предложение в разделе Options страницы руководства. – user1686 03.07.2011, 21:40