Что будет выведено на экран после выполнения программы cats 2 if cats

2. Даны две строки, выяснить совпадают ли их длины.

Ответы 1

1 — в) caa2 — в) в столбик3 — в) char4 — в) пояснительный текст не нужен5 — в) символ заключается в апострофы1)Var s1: string;i,a:integer;BeginWriteln (‘введите текст’);Readln (s1);for i:=1 to length(s1) doif (s1[i]=’а’)or(s1[i]=’a’) then a:=a+1;writeln(‘количество букв а в тексте: ‘,a);End.2)Var s1,s2: string;BeginWriteln (‘введите первую строку’);Readln (s1);Writeln (‘введите вторую строку’);Readln (s2);if length(s1)=length(s2) then writeln(‘длины строк совпадают’) else writeln(‘длины строк не совпадают’) End.

Источник: znanija.site

Насколько хорошо ты знаешь bash?

Пользуешься командным интерпретатором каждый день? Готов решить несколько логических задачек и узнать что-то новое? Добро пожаловать под кат.

Did you know this about your cat? #catfact #cat #cats #catlover



Часть представленных здесь задач не принесёт реальной пользы, так как затрагивает какие-то сложные граничные случаи. Другая же часть будет полезна тем, кто постоянно использует шелл и читает чужие скрипты.

Примечание: на момент написания статьи автор использовал bash 4.4.12(1)-release в подсистеме Linux на Windows 10. Сложность задач различная.

Потоки ввода-вывода

$ cat 1 The cake is a lie! Wanted! Cake or alive $ cat 1 | head | tail | sed -e ‘s/alive/dead/g’ | tee | wc -l > 1

Сколько строк будет в файле 1 после выполнения команды?

Объяснение

После интерпретации команды, но до запуска всех программ bash работает с указанными потоками ввода-вывода. Таким образом файл 1 очищается перед запуском первой программы и cat открывает уже очищенный файл.

$ cat file1 I love UNIX! $ cat file2 I don’t like UNIX $ cat file1

Что будет выведено на экран?

I love UNIX!
Объяснение
Некоторые программы забивают на stdin, когда указаны файлы.

Читайте также:
Сделать образ установленной программы

$ cat file Just for fun $ cat file 1>/dev/null

Что будет выведено на экран?

Just for fun
Объяснение
Есть заблуждение, что последовательность 1>/dev/null интерпретатор записывает значение в ячейку 2, оставляя другие ячейки нетронутыми:

1 2
stdin stderr /dev/null

bash выводит так же и поток ошибок, так что на мы обнаруживаем на экране текст файла.

Задача 4
Как вывод stdout отправить на stderr, а вывод stderr, наоборот, на stdout?

Объяснение

Принцип ровно как и в предыдущей задаче. Именно поэтому нам требуется дополнительный поток для временного хранения.

Исполняемые файлы

Дан файл test.sh

$ ls 1 2 3 test.sh $ ./test.sh 1 2 3

Что выведет скрипт?

1 2 3
1 2 3
ls: cannot access ‘1 2 3’: No such file or directory
1 2 3

Эти действия сокращают жизнь кошке 🐈😿 #cat #catsfacts



Объяснение

Создадим в текущей директории файл -c c правами 755 и таким содержимым:

#!/bin/bash echo $1

Обнулим переменную $PATH и попытаемся выполнить:

$ PATH= $ -c «echo SURPRISE»

Что будет выведено на экран? Что произойдет, если повторить ввод последней команды?

Первый раз будет выведено SURPRISE , второй раз echo SURPRISE
Объяснение

При пустом PATH шелл начинает искать файлы в текущем каталоге. -с как раз находится. Так как исполняемый файл — текстовый, считывается первая строчка на предмет шебанга. Команда собирется по шаблону:

Таким образом, перед выполнением наша команда выглядит так:

/bin/bash -c «echo SURPRISE»

И, как следствие, выполняется совершенно не то, что мы хотели.

Если выполнить второй раз, то шелл подберёт информацию о -c из кэша и выполнит его уже верно. Единственный способ защититься от столь неожиданного эффекта — добавить два минуса в шебанг.

Переменные

$ ls file $ cat

Что будет выведено на экран в первом и во втором случае?

Читайте также:
Программа которая показывает удаленные сообщения в ВК

В первом будет выведено содержимое файла file, во втором — имя файла.
Объяснение

В первом случае выполняется подстановка

После подстановки команда приобретёт вид:

cat /dev/fd/xx
$ TEST=123456 $ echo $

Что будет выведено на экран?

Объяснение

При такой записи матчится паттерн (# — с начала переменной; ## — жадно с начала переменной; % — с конца переменной; %% — жадно с конца переменной) и удаляется при подстановке. Содержимое переменной при этом остаётся нетронутым. Таким образом, например, удобно получать имя файла без расширения.

$ TEST=file.ext $ echo $ file
$ echo $

Что будет выведено на экран?

Если переменная friendship определена, то содержимое переменной. Иначе — magic.
Объяснение

В документации эта магия называется «unset or null» и позволяет использовать заданное дефолтное значение переменной в одну строчку.

Порядок выполнения

while true; false; do echo Success done

Что будет выведено на экран?

Объяснение

Операторы while и if позволяют в условие запихать целую последовательность действий, однако результат (код возврата) будет учитываться только у последней команды. Так как там стоит false, цикл даже не начнётся.

$ false true || true false echo 1 || echo 2

Что будет выведено на экран?

Объяснение

Добавим скобочек для явного порядка и упростим команду, принимая во внимание, что учитывается только код возврата последней команды:

((((false true) || true) false) echo 1) || echo 2 (((false || true) false) echo 1) || echo 2 ((true false) echo 1) || echo 2 (false echo 1) || echo 2 false || echo 2 echo 2

Источник: habr.com

Урок 38
Контрольная работа

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru