- 1
- 2
- 3
#!/bin/sh
[ ${SHELL} = "/bin/bash" ] || exit "Bash required!"
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
#!/bin/sh
[ ${SHELL} = "/bin/bash" ] || exit "Bash required!"
0
stop() {
PIDS=$(/sbin/pidof $PNAME)
CNT=0
if [[ $PIDS != "" ]]; then
echo -n "Stopping $PNAME: "
killall $PNAME && echo "ok" || echo "failed"
while [[ $PIDS != "" ]]
do
PIDS=$(/sbin/pidof $PNAME)
echo -n "."
sleep 1
CNT=$(($CNT+1))
if [[ $CNT -eq 3 ]]; then killall -9 $PNAME;echo -e "\n$PNAME: Force kill";break; fi
done
echo
else echo "$PNAME: don't start"
fi
}
Так автор видел выключение процесса. Процесс работает с файлами на жестком диске и ему важна их целостность, поэтому за 3 секунды не завершался. А еще при gracefully shutdown пишется обновление конфига процесса на диск. Но кого волнуют такие мелочи если оно уже работает в проде 7+ лет
0
export $(grep PROJECT_NAME .env | xargs)
export $(grep USERID .env | xargs)
docker exec -it -u ${USERID} ${PROJECT_NAME}_application bash -l
На минуточку в проекте написанный лично разрабом до меня docker-compose.
0
~ cat test.sh
#!/bin/bash
for i in "$@"; do
echo $i
done
arglist="$@"
for i in $arglist; do
echo $i
done
~ sh test.sh 1 2 '3 4'
1
2
3 4
1
2
3
4
~
Застрял на отладке одного скрипта, как этим правильно пользоваться?
0
#!/usr/bin/env bash
URL=https://foo.bar/baz.zip
PATH=/home/foo/bar/baz.zip
wget -O "$PATH" "$URL"
И только потом до мена дошло…
0
#!/bin/bash
status=$(xinput list-props 11 | grep 'Device Enabled' | tail -c 2 | tr -d '\n')
echo "Current TB status: $status"
if [[ $status = "0" ]]
then
xinput enable 11
echo "Enabled touchpad!"
else
xinput disable 11
echo "Disabled touchpad!"
fi
Как вам мой скриптик?
0
function error {
printf "ERROR: $1\n" >&2
}
function warning {
printf "WARNING: $1\n"
}
function info {
printf "INFO: $1\n"
}
function println {
printf "$1\n"
}
function block {
printf "\n$3\n$1 \t[$2]\n$3\n"
}
function fail {
println "\n"
println "FAIL"$1
println
}
function checkz {
if [ -z $1 ]; then
error "empty string"
return 1
fi
info "string \"$1\" \t[OK]"
return 0
}
function checkx {
if [ ! -x $1 ]; then
error "$1 \t[NOT FOUND]"
return 1
fi
info "$1 \t[OK]"
return 0
}
function checkb {
if [ ! -b $1 ]; then
error "$1 \t[NOT FOUND]"
return 1
fi
info "$1 \t[OK]"
return 0
}
function checkc {
if [ ! -c $1 ]; then
error "$1 \t[NOT FOUND]"
return 1
fi
info "$1 \t[OK]"
return 0
}
function checkf {
if [ ! -f $1 ]; then
error "$1 \t[NOT FOUND]"
return 1
fi
info "$1 \t[OK]"
return 0
}
function checkd {
if [ ! -d $1 ]; then
error "$1 \t[NOT FOUND]"
return 1
fi
info "$1 \t[OK]"
return 0
}
function checkd_mk {
if [ ! -d $1 ]; then
info "$1 \t[NOT FOUND]"
info "$1 \t[MAKING...]"
mkdir -p $1
checkd $1
return $?
fi
info "$1 \t[OK]"
return 0
}
function sized {
sized=($(ls $1))
return ${#sized[@]}
}
Вспомогательные функции проверки файлов и директорий, а также вывода ошибок
0
/bin/cat /bin/cat
0
#!/bin/bash
# apt install jq w3m curl
curl https://gcode.space/api/comments \
| jq -r 'map("-"*99+"<br>"+.user_name+" "+.posted+"<br>","<ul>"+.text+"</ul>") | reduce .[] as $item (""; . + $item) ' \
| w3m -T text/html -cols 99 -dump \
| less -R
Консольная читалка для стока ГК
0
#!/bin/bash
set -euo pipefail
host() {
echo "n${1}.local"
}
node() {
echo "<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4722352b07">[email protected]</a>$(host $1)"
}
build() {
[ "${1}" -eq "1" ] && echo "build: ."
}
container() {
cat <<EOF
worker${1}:
$(build $1)
image: worker
hostname: $(host $1)
networks:
backplane:
aliases:
- $(host $1)
environment:
- "NODE_NAME=$(node $1)"
- ... прочая питушня
EOF
}
main() {
cat <<EOF
version: '3.3'
networks:
backplane:
services:
$(node 1)
$(node 2)
...
EOF
}
main > docker-compose.yml
docker-compose <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ceea8e">[email protected]</a>
Как тебе такое, Helm?