<!--
.. title: Несколько приёмов для bash
.. slug: bash-tricks
.. date: 2021-11-24 17:13:18 UTC+03:00
.. updated: 2025-10-09 13:42:13 UTC+03:00
.. tags: bash, linux 
.. category: linux 
.. link: 
.. description: 
.. type: text
-->

# Запуск python в зависимости от платформы

Требуется под linux запускать python как `python3`, 
а под windows как `python`

В скрипте можно сделать так:

```bash
if [[ "$OSTYPE" == "linux"* ]]; then
  PY=python3
else
  PY=python
fi
```

В дальнейшем коде запускать `$PY` вместо `python`.

# Возврат кода ошибки

Чтобы вернуть код ошибки из одного и того же скрипта
может быть два варианта:

* скрипт запустили прямо из bash
* скрипт вызвали из другого скрипта

Если скрипт запустили прямо из bash, то надо использовать `exit`,
а если из другого скрипта, то с высокой долей вероятности требуется `return`.

Можно это делать автоматически:

```bash
### define $ret command as 'exit' if run standalone or
### define $ret command as 'return' if called from another script
[[ "$0" == "$BASH_SOURCE" ]] && ret=exit || ret=return
``` 

Потом это можно использовать примерно так:

```bash
mysupercommand || $ret $? 

или

$ret 1

```

# Присвоить значение переменной если такой переменной ещё нет

```bash
[ -z "${OUTDIR}" ] && OUTDIR=__output
```
ну или полноценное условие если переменной не существует

```bash
if [[ -z "${USE_VAR}" ]]; then
  echo "### No USE_VAR defined"
else
  echo "### USE_VAR = ${USE_VAR}"
  ......
fi

```

# Дополнение строковой переменной новой строкой


```bash

MYVAR=

MYVAR+=$'\n'
MYVAR+="string number 1"


MYVAR+=$'\n'
MYVAR+="string number 2"

echo "${MYVAR}"

```
