Можно ли объявить несколько локальных переменных в одной строке

Solo usa lo siguiente:

watch -d df
3
28.06.2019, 00:26
2 ответа

Да, можете. Возможное предостережение SC2155 заключается в том, что вы должны объявлять и назначать отдельно.

При этом он будет работать, за исключением использования нескольких опций объявления между параметрами. Также обратите внимание, что параметры объявления будут применяться ко всем переменным (в данном случае-i).

скрипт0:

#!/bin/bash

declare a b c
a=foo
b=bar
c=baz

foo () {
    local a=1 b=2 c=3

    echo "From within func:"
    declare -p a
    declare -p b
    declare -p c
}

foo

echo "From outside func:"
declare -p a
declare -p b
declare -p c

Выход:

$./script.sh
From within func:
declare -- a="1"
declare -- b="2"
declare -- c="3"
From outside func:
declare -- a="foo"
declare -- b="bar"
declare -- c="baz"

сценарий1:

#!/usr/bin/env bash

declare -i a -a b c
a=foo
b=(bar)
c=baz

foo () {
    local -i a=1 -a b=(2) c=3

    echo "From within func:"
    declare -p a
    declare -p b
    declare -p c
}

foo

echo "From outside func:"
declare -p a
declare -p b
declare -p c

Выход:

$./script.sh
./script.sh: line 3: declare: `-a': not a valid identifier
./script.sh: line 9: local: `-a': not a valid identifier
From within func:
declare -i a="1"
declare -ai b=([0]="2")
declare -i c="3"
From outside func:
declare -i a="0"
declare -ai b=([0]="0")
declare -i c="0"
15
27.01.2020, 21:12

В дополнение к отличному ответу @jesse _b. Я могу подтвердить, что это также работает (и учитывает лучшие практики SC2155 ):

.
foo()
{
  local x y z
  x=1
  y=2
  z=3
}
3
20.05.2021, 12:27

Теги

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