-
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
# Если вы желаете ограничить диапазон "снизу",
# то просто производите генерацию псевдослучайных чисел в цикле до тех пор,
# пока не получите число большее нижней границы.
FLOOR=200
number=0 # инициализация
while [ "$number" -le $FLOOR ]
do
number=$RANDOM
done
echo "Случайное число, большее $FLOOR --- $number"
https://www.opennet.ru/docs/RUS/bash_scripting_guide/x4812.html
groser,
26 Ноября 2019
-
−1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
#!/bin/sh
IFS=:
echo "Login\tUID"
while read LOGIN _ UID _;
do
echo "$LOGIN\t$UID"
done < /etc/passwd
давайте обсуждать шелл-программирование
MAKAKA,
07 Ноября 2019
-
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
set -e
myfunc() {
echo "START"
v=$(asdasdsd 1 2 3)
echo "FINISH"
}
myfunc && echo "OK"
Выводит:
START
./b.sh: line 5: asdasdsd: command not found
FINISH
OK
asdasdsd - несуществующая команда, вызывающая падение скрипта
Помогите сделать так, чтобы ошибку можно было поймать, и чтобы до echo "FINISH" не доходило.
Уже всё перепробовал. Нерабочие вореанты просьба не предлагать.
Вот так работает правильно
set -e
myfunc() {
echo "START"
v=$(asdasdsd 1 2 3)
echo "FINISH"
}
myfunc
Выводит:
START
./a.sh: line 5: asdasdsd: command not found
Но мне нужно ошибку перехватить.
guestinxo,
22 Октября 2019
-
−1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
Как наебнуть дистрибутив, читайте бесплатно без регистрации и СМС.
Способ от Oleg'а: Каряво обновить.
1) Идем на https://en.opensuse.org/SDB:System_upgrade, делаем все по инструкции.
2) Качаем 1.6 ГБ пакетов и ждем установки
3) На системном разделе в 50 гигов заканчивается место почти за 10% до конца установки
4) ctrl+C
А почему я решил обновить его именно сейчас?
Да потому что mariadb 10.2 поддерживающая JSON поля тянет зависимости вплоть до glibc.
А я уже один раз установил более свежую glibc в debian, лучше этого больше никогда не повторять.
В общем, если надо обновлять пакет - то обновляй с дистрибутивом вместе, все равно именно так и поставляют, такая вот логика.
https://software.opensuse.org/package/mariadb
Ну может еще пошаманю посижу, удалю весь мусор идущий в "start menu" и запущу апгрейд по новой, но точно не сейчас.
Потому что надо дописывать код.
Вот же я лох.
OlegUP,
29 Августа 2019
-
−1
- 1
- 2
if [[ $(git log -n 1 --format=%D HEAD) == *"merge"* ]]; then
sed -i "s/GIT_COMMIT\(.*\)/GIT_COMMIT=$(git rev-list HEAD | sed -n 2p)/" env.list
goose123,
20 Июня 2019
-
0
Допустим jopa бесконечно срёт в STDOUT.
parasha это всё читает из STDIN.
Что будет делать ОС, если параша не будет успевать читать высеры?
Держать в памяти? Сохранять на диск?
Perevedi_na_PHP,
12 Февраля 2019
-
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
[ERROR] The compilation of ocaml-base-compiler failed at "/home/me/.opam/opam-init/hooks/sandbox.sh build ./configure -prefix /home/me/.opam/ocaml-base-compiler.4.02.3 -with-debug-runtime".
#=== ERROR while compiling ocaml-base-compiler.4.02.3 =========================#
# context 2.0.0 | linux/x86_64 | | https://opam.ocaml.org#12c8601e
# path ~/.opam/ocaml-base-compiler.4.02.3/.opam-switch/build/ocaml-base-compiler.4.02.3
# command ~/.opam/opam-init/hooks/sandbox.sh build ./configure -prefix /home/me/.opam/ocaml-base-compiler.4.02.3 -with-debug-runtime
# exit-code 2
# env-file /tmp/opam-me-3195/ocaml-base-compiler-3195-d6d332.env
# output-file /tmp/opam-me-3195/ocaml-base-compiler-3195-d6d332.out
### output ###
# ./configure: line 195: rm: command not found
# ./configure: line 196: touch: command not found
# ../gnu/config.guess: line 35: sed: command not found
# ../gnu/config.guess: line 1364: mkdir: command not found
# ../gnu/config.guess: line 1364: mkdir: command not found
# : cannot create a temporary directory in /tmp
# [ERROR!] Cannot guess host type. You must specify one with the -host option.
^ ...И так там со всем.
Кто там хотел попробовать "NixOS"? Могу поделиться впечатлениями: если вы надеятесь, что в этой оси можно будет пользоваться привычными "autotools", "opam" и "cabal", то фиг там. Из-за сломанного FHS ебаться с "Nix" придётся с первой минуты. cast @Роман
CHayT,
25 Декабря 2018
-
−2
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
names="com.termux io.twaik.lorie rubberbigpepper.Orientator"
if test ! -e /realproc/cmdline
then
echo Mounting realproc
mount -o remount,rw none /
mkdir /realproc
mount -t proc none /realproc
fi
tail -f /dev/null|am monitor| while read line
do
echo "$line"
for n in $names
do
for p in `pidof $n`
do
if test -e /proc/$p/oom_adj
then
echo Masking pid $p
mount -t tmpfs -o size=4k none /proc/$p/
for f in /realproc/$p/*
do ln -s $f /proc/$p
done
rm /proc/$p/oom_*
fi
echo Setting oom adj for $n $p, was $(cat /realproc/$p/oom_adj)
echo -17 > /realproc/$p/oom_adj
done
done
done
достал oom killer.
Где тут shell в языках?
mittorn,
27 Ноября 2018
-
−2
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
function SymlinkNextStunnelConfig {
OLDIFS=$IFS
IFS=$'\n'
stunnelConfigs=($(find ${STUNNEL_CONFIG_D} -regex ".*\.conf$"))
IFS=$OLDIFS
if [[ -f ${CURRENT_STUNNEL_CONF} ]]; then
currentConfig=$(readlink -f ${CURRENT_STUNNEL_CONF})
else
currentConfig=""
fi
if [[ ${#stunnelConfigs[@]} -eq 0 ]]; then
echo "No config found in ${STUNNEL_CONFIG_D}"
exit 6
elif [[ ${#stunnelConfigs[@]} -eq 1 ]]; then
nextConfig=${stunnelConfigs[0]}
else {
echo "ZAEBALO. DELAY SYMLINK VRUCHNUYU!"
}
fi
if [[ -L ${CURRENT_STUNNEL_CONF} ]]; then
rm -f ${CURRENT_STUNNEL_CONF}
fi
ln -s ${stunnelConfigs[0]} ${CURRENT_STUNNEL_CONF}
}
Нашёл старую какашку, запостил перед удалением.
fluttr,
13 Ноября 2018
-
0
- 1
- 2
echo $TTY
cat /dev/pts/5
Открываем два терминала, смотрим у каждого $TTY, и делаем у каждого cat на TTY противоположного терминала.
Получается очень простой локальный чат. Наверное, если использовать какую-нибудь сетевую фигню, так можно сделать интернет-чат.
vistefan,
07 Сентября 2018