Разбор JSON с помощью jq для получения имени ниже JSON

tl;drscript=$(readlink -e -- "${BASH_SOURCE}")(для bash очевидно)


$BASH_SOURCEтестовые примеры

данный файл/tmp/source1.sh

echo '$BASH_SOURCE '"(${BASH_SOURCE})"
echo 'readlink -e $BASH_SOURCE'\
     "($(readlink -e -- "${BASH_SOURCE}"))"

sourceфайл разными способами

sourceиз/tmp

$> cd /tmp

$> source source1.sh
$BASH_SOURCE (source1.sh)
readlink -e $BASH_SOURCE (/tmp/source1.sh)

$> source./source1.sh
$BASH_SOURCE (./source1.sh)
readlink -e $BASH_SOURCE (/tmp/source1.sh)

$> source /tmp/source1.sh
$BASH_SOURCE (/tmp/source1.sh)
readlink -e $BASH_SOURCE (/tmp/source1.sh)

sourceиз/

cd /
$> source /tmp/source1.sh
$0 (bash)
$BASH_SOURCE (/tmp/source1.sh)
readlink -e $BASH_SOURCE (/tmp/source1.sh)

sourceиз разных относительных путей /tmp/aи/var

$> cd /tmp/a

$> source../source1.sh
$BASH_SOURCE (../source1.sh)
readlink -e $BASH_SOURCE (/tmp/source1.sh)

$> cd /var

$> source../tmp/source1.sh
$BASH_SOURCE (../tmp/source1.sh)
readlink -e $BASH_SOURCE (/tmp/source1.sh)

относительно$0

во всех случаях, если в скрипт добавлена ​​команда

echo '$0 '"(${0})"

затем sourceскрипт всегда печатается

$0 (bash)

однако , если скрипт был запустить , например.

$> bash /tmp/source1.sh

, тогда $0будет строковым значением /tmp/source1.sh.

$0 (/tmp/source1.sh)
$BASH_SOURCE (/tmp/source1.sh)
readlink -e $BASH_SOURCE (/tmp/source1.sh)
1
19.09.2019, 15:21
1 ответ
jq -r '.[]|select(.middlename|not).firstname'

Это дает вам имена для записей, у которых нет атрибута middlenameили где атрибут middlenameявляется логическим false.

jq -r '.[]|select(has("middlename")|not).firstname'

Дал бы вам имена для записей, у которых нет middlename.

2
27.01.2020, 23:30

Теги

Похожие вопросы