#1 16.03.2015 18:30:31

Ampermetr
Administrator
Зарегистрирован: 25.05.2014
Сообщений: 44
IP-адрес

Поведение скрипта,в зависимости от метода запуска

Слепил вот такой скрипт:


#! /bin/bash
count=${7}
while [ $count -t 10 ]; do
echo name is $RANDOM
let RANDOM=RANDOM++
done
FILENAME=${RANDOM}1.txt
cd /home/user/Desktop/новая
touch ${FILENAME}


Будучи запущенным в терминале скрипт создает файл 1.txt, при повторном запуске файл перезаписывается.
При запуске даблкликом с рабочего стола скрипт создает файлы типа 529035.txt, то есть в какой то момент срабатывает переменная RANDOM
В чем может быть причина такого поведения?

//не забываем пользоваться BBCode
diablopc

#2 16.03.2015 18:44:55

Vascom
Administrator
Зарегистрирован: 02.04.2010
Сообщений: 4 019
IP-адрес

Поведение скрипта,в зависимости от метода запуска

А у меня и в консоли создаёт файлы со случайным числом в качестве имени (ну и единичка в конце).

#3 16.03.2015 18:54:51

Ampermetr
Administrator
Зарегистрирован: 25.05.2014
Сообщений: 44
IP-адрес

Поведение скрипта,в зависимости от метода запуска

Я запускаю на восьмом дебиане, сейчас попробую в виртуалках потыкать.

#4 16.03.2015 19:22:46

1000Mhz
Administrator
Зарегистрирован: 17.08.2014
Сообщений: 816
IP-адрес

Поведение скрипта,в зависимости от метода запуска

Напишите лучше ТЗ, и вам покажут, как делать правильно.

#5 16.03.2015 19:45:06

Ampermetr
Administrator
Зарегистрирован: 25.05.2014
Сообщений: 44
IP-адрес

Поведение скрипта,в зависимости от метода запуска

Изначальная задача у меня была скриптом создать файл с рандомным именем. Грубо говоря взял первый попавшийся похожий скрипт, подпилил и теперь он создает файлы.
Правильный (может не совсем)скрипт я уже написал,


Сейчас больше интересует почему первый скрипт выдает разные результаты.

#6 16.03.2015 19:48:26

1000Mhz
Administrator
Зарегистрирован: 17.08.2014
Сообщений: 816
IP-адрес

Поведение скрипта,в зависимости от метода запуска

Quote by Ampermetr
Изначальная задача у меня была скриптом создать файл с рандомным именем.

[console]touch $RANDOM[/console]
Скрипт-то зачем? *ROFL*

#7 16.03.2015 19:50:17

Ampermetr
Administrator
Зарегистрирован: 25.05.2014
Сообщений: 44
IP-адрес

Поведение скрипта,в зависимости от метода запуска

Ну кто ж знал :D

#8 16.03.2015 21:16:46

yars
Administrator
Зарегистрирован: 23.03.2012
Сообщений: 9 369
IP-адрес

Поведение скрипта,в зависимости от метода запуска

Quote by Ampermetr
создать файл с рандомным именем

Файл временный, как я полагаю? Тогда можно воспользоваться mktemp(1).

#9 17.03.2015 04:48:09

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Поведение скрипта,в зависимости от метода запуска

Quote by Ampermetr
let RANDOM=RANDOM++

не нужно этой переменной ничего присваивать. Она после присваивания начинает выдавать одно и то же.

Ну и конечно погуглите, что значит ++ (инкремент), узнаете много нового.

Quote by Ampermetr
while [ "$count" -le $MAX ];

ну кто так пишет?!
while (( count <= MAX ))

либо вообще так:
for (( count=1; count <=MAX; count++ ))

Впрочем, мне непонятно, на кой ляд здесь вообще цикл?
Quote by Ampermetr
cd /home/user/Desktop/новая

надо
cd "$HOME/Desktop/Новая Папка/"

#10 17.03.2015 11:58:38

Ampermetr
Administrator
Зарегистрирован: 25.05.2014
Сообщений: 44
IP-адрес

Поведение скрипта,в зависимости от метода запуска

Проверил в трех виртуальных машинах, нигде результат выполнения не зависит от того, как запускать скрипт. Получается проблема в самой оболочке shell на этом компьютере?

#11 17.03.2015 12:09:03

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Поведение скрипта,в зависимости от метода запуска

Quote by Ampermetr
Получается проблема в самой оболочке shell на этом компьютере?

проблема в руках из задницы.

#12 17.03.2015 12:18:55

Ampermetr
Administrator
Зарегистрирован: 25.05.2014
Сообщений: 44
IP-адрес

Поведение скрипта,в зависимости от метода запуска

В этом я и изначально не сомневался))

Board footer