LinuxForum.Fans
Тема

Короткий скрипт

Автор: richagok 22 сообщений 5270 просмотров
#356901

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

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

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

#356935
text
echo>>$0;wc -l <$0
#356950
text
ls|wc 2>$$
#356951
smaharbA написал:
text
ls|wc 2>$$

text

█▓▒░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]$
#356953
text
>$$;ls|wc
#356954

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

#356957
"smaharbA" написал:
>$$;ls|wc
text
█▓▒░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]$
#356959
smaharbA написал:
Lupo Alberto - в сабже речь о скрипте, а не о командной строке
Показать
text

█▓▒░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]$

#356960

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

#356962
"smaharbA" написал:
результат соответствует т.з.

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

#356963

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

text
wc<$0>>$0;
#356964
smaharbA написал:
согласен, конечно т.з. подойдет и
text
wc<$0>>$0;

Не работает.

#356967

в баше будет

#356969
smaharbA написал:
в баше будет
text
[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: команда не найдена
#356973
"Lupo Alberto" написал:
test.sh: line 2: 1: команда не найдена
test.sh: line 3: 2: команда не найдена
test.sh: line 4: 3: команда не найдена
#356978

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

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

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

text

[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
#356985
text
ls>$$&

но не факт

#356986
text
ls f>>f;wc f
#356991

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

text
echo $[y++]
Войдите или зарегистрируйтесь, чтобы ответить.