1 (24.12.2013 08:52:29 отредактировано richagok)

Здравствуйте. Необходимо написать скрипт shell длиной не более 10 символов, который каждый раз при запуске выводил бы число на 1 большее, чем при предыдущем запуске. Подскажите, может кто знает как это сделать.

мой пример: q 2»f;wc -l<f
q - unknown command, перенаправляем stderr в файл, затем подсчитываем там число строк.

Может у кого получится меньше?

2

echo>>$0;wc -l <$0
Я конечно далек от мысли...(с)

3

ls|wc 2>$$
Я конечно далек от мысли...(с)

4 (24.12.2013 17:35:21 отредактировано Lupo Alberto)

smaharbA пишет:
ls|wc 2>$$
█▓▒░lupo@asus-x201e█▓▒░ Вт дек 24 04:34:06 
/tmp/ ls|wc 2>$$
     16      16     239
█▓▒░lupo@asus-x201e█▓▒░ Вт дек 24 04:34:12 
/tmp/ ls|wc 2>$$
zsh: Файл существует: 1841
█▓▒░lupo@asus-x201e█▓▒░ Вт дек 24 04:34:13 
/tmp/ bash
[lupo@asus-x201e tmp]$ ls|wc 2>$$
     17      17     230
[lupo@asus-x201e tmp]$ ls|wc 2>$$
     17      17     230
[lupo@asus-x201e tmp]$ ls|wc 2>$$
     17      17     230
[lupo@asus-x201e tmp]$
Был, был и весь вышел...

5

>$$;ls|wc
Я конечно далек от мысли...(с)

6

Lupo Alberto - в сабже речь о скрипте, а не о командной строке

Я конечно далек от мысли...(с)

7

smaharbA пишет:

>$$;ls|wc

█▓▒░lupo@asus-x201e█▓▒░ Вт дек 24 04:43:43 
/tmp/ >$$;ls|wc
^C
█▓▒░lupo@asus-x201e█▓▒░ Вт дек 24 04:43:58 
/tmp/ bash
[lupo@asus-x201e tmp]$ >$$;ls|wc
     17      17     230
[lupo@asus-x201e tmp]$ >$$;ls|wc
     17      17     230
[lupo@asus-x201e tmp]$ >$$;ls|wc
     17      17     230
[lupo@asus-x201e tmp]$
Был, был и весь вышел...

8

smaharbA пишет:

Lupo Alberto - в сабже речь о скрипте, а не о командной строке

+ открыть спойлер
█▓▒░lupo@asus-x201e█▓▒░ Вт дек 24 04:48:06 
/tmp/ cat test.sh 
>$$;ls|wc
█▓▒░lupo@asus-x201e█▓▒░ Вт дек 24 04:48:11 
/tmp/ zsh test.sh
^C
█▓▒░lupo@asus-x201e█▓▒░ Вт дек 24 04:48:31 
/tmp/ bash test.sh 
     29      29     293
█▓▒░lupo@asus-x201e█▓▒░ Вт дек 24 04:48:37 
/tmp/ bash test.sh
     30      30     298
█▓▒░lupo@asus-x201e█▓▒░ Вт дек 24 04:48:38 
/tmp/ bash test.sh
     31      31     303
█▓▒░lupo@asus-x201e█▓▒░ Вт дек 24 04:48:39 
/tmp/ chmod 755 test.sh 
█▓▒░lupo@asus-x201e█▓▒░ Вт дек 24 04:48:53 
/tmp/ ./test.sh 
     32      32     308
█▓▒░lupo@asus-x201e█▓▒░ Вт дек 24 04:48:58 
/tmp/ ./test.sh
     33      33     313
█▓▒░lupo@asus-x201e█▓▒░ Вт дек 24 04:49:00 
/tmp/ ./test.sh
     34      34     318
█▓▒░lupo@asus-x201e█▓▒░ Вт дек 24 04:49:02 
/tmp/ bash
[lupo@asus-x201e tmp]$ ./test.sh 
     35      35     323
[lupo@asus-x201e tmp]$ ./test.sh 
     36      36     328
[lupo@asus-x201e tmp]$ ./test.sh 
     37      37     333
[lupo@asus-x201e tmp]$ ./test.sh 
     38      38     338
[lupo@asus-x201e tmp]$
Был, был и весь вышел...

9

результат соответствует т.з.

Я конечно далек от мысли...(с)

10 (24.12.2013 17:56:43 отредактировано Lupo Alberto)

smaharbA пишет:

результат соответствует т.з.

...мягко говоря, не совсем.
P.S. Ни в чём не упрекаю, просто у меня приступ формализма.

Был, был и весь вышел...

11

согласен, конечно т.з. подойдет и

wc<$0>>$0;
Я конечно далек от мысли...(с)

12

smaharbA пишет:

согласен, конечно т.з. подойдет и

wc<$0>>$0;

Не работает.

Был, был и весь вышел...

13

в баше будет

Я конечно далек от мысли...(с)

14

smaharbA пишет:

в баше будет

[lupo@asus-x201e tmp]$ cat test.sh 
wc<$0>>$0;
[lupo@asus-x201e tmp]$ bash test.sh
test.sh: line 2: 1: команда не найдена
[lupo@asus-x201e tmp]$ bash test.sh
test.sh: line 2: 1: команда не найдена
test.sh: line 3: 2: команда не найдена
[lupo@asus-x201e tmp]$ bash test.sh
test.sh: line 2: 1: команда не найдена
test.sh: line 3: 2: команда не найдена
test.sh: line 4: 3: команда не найдена
Был, был и весь вышел...

15

Lupo Alberto пишет:

test.sh: line 2: 1: команда не найдена
test.sh: line 3: 2: команда не найдена
test.sh: line 4: 3: команда не найдена

Я конечно далек от мысли...(с)

16

Желательно конечно чтоб одно число выводило и не из файла команда. А прямо в командной строке

17

richagok пишет:

Желательно конечно чтоб одно число выводило и не из файла команда. А прямо в командной строке

У меня в два раза превышен лимит символов

[lupo@asus-x201e temp]$ ls|wc -l;>`date +%N`
0
[lupo@asus-x201e temp]$ ls|wc -l;>`date +%N`
1
[lupo@asus-x201e temp]$ ls|wc -l;>`date +%N`
2
[lupo@asus-x201e temp]$ ls|wc -l;>`date +%N`
3
Был, был и весь вышел...

18

ls>$$&

но не факт

Я конечно далек от мысли...(с)

19

ls f>>f;wc f
Я конечно далек от мысли...(с)

20

в баше, но и то 11

echo $[y++]
Я конечно далек от мысли...(с)

21 (24.12.2013 22:48:39 отредактировано richagok)

Из файла тоже можно)

Пока что короче всех вот этот получается: >$$;ls|wc -l

Только объясните если не сложно, что делает >$$

22

richagok пишет:

Только объясните если не сложно, что делает >$$

Создаёт файл с именем, состоящим из номера процесса оболочки, где запущен скрипт. Вроде так.

Был, был и весь вышел...