LINUX.ORG.RU

Как подставить для перенаправления путь и имя файла сгенерированого $RANDOM

 , ,


0

1

Целый день мучаюсь, не могу перенаправить вывод в скрипте

echo  "aaa" > ./$RANDOM

Выдает

cannot create ./: Is a directory

Какие я только кавычки и скобочки не пробовал. И echo вставлял, ничего не выходит.

Если просто набрать в консоли, все работает. А из скрипта нет.

Объясните пожалуйста почему так. И как заставить скрипт работать.


Объясните пожалуйста почему так.

Очевидно же: пробуешь в оболочке, где нет RANDOM: «cannot create ./:», по посиксу он не обязан быть.

И как заставить скрипт работать.

Либо другую оболочку, либо сплясать вокруг /dev/urandom.

anonymous
()

Может в скрипте не #!/bin/bash, а что-то другое, где $RANDOM пуст?
А вообще лучше mktemp или tempfile использовать.

Lavos ★★★★★
()
Ответ на: комментарий от anonymous

Либо другую оболочку

Например, bash честно написать.

anonymous
()
file=`mktemp`
echo  "aaa" > $file
anonymous
()

в консоли интерпретатор bash

для скриптов или в шебанге sh

anonymous
()
$ cat randomtest
#!/bin/bash
rnd=$RANDOM
echo Random = $rnd
echo "aaa" > $rnd
$ ./randomtest 
Random = 16278
$ ls 16278
16278
$ cat 16278
aaa
$ rm 16278
$

Что я делаю не так?

Black_Shadow ★★★★★
()
Ответ на: комментарий от Black_Shadow

Ну, например, слоупочишь по-дикому.

anonymous
()
Ответ на: комментарий от anonymous

Нее $RANDOM работает. Когда вызываю из командной строки, файл создается. И оболочка баш и скрипт на баше. Не понял почему все печенюшат баш:) Я скрипты редко, но пописываю. Раньше все работало. Так как на разных платформах пишу, то решил что баш есть везде. Вот и не заморачивался.

moldov
() автор топика
Ответ на: комментарий от moldov

скрипт на баше

тебе говорят про каким интерпретатором скрипит исполняется, а не на чём он написан, болезный

anonymous
()
Ответ на: комментарий от moldov

в debian оболочка bash, а скрипты исполняются dash

anonymous
()
Ответ на: комментарий от zolden

проверил в шебанге sh а echo $SHELL дает bash. Справился с помощью mktemp но хотелось бы добить $RANDOM

moldov
() автор топика

Тащемта перед тем как использовать переменную, не дурно бы проверить, а есть ли она:

[ -n $RANDOM ] && echo  "aaa" > ./$RANDOM || echo  "aaa" > `mktemp`

akk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.