Как напечатать имя переменной вместо ее скрипта оболочки значения?

Я думаю, здесь вы ошиблись:

Если я попытаюсь запустить:

btrfs subvolume snapshot /mnt/disk/root/snapshots/2015-05-01 /mnt/disk/root

Он создает новый подтом как /mnt/disk/root/2015-05-01 вместо заменив /mnt/disk/root/.

Снимок подтома btrfs используется для создания снимка первого аргумента и размещения его в каталоге, заданном вторым аргументом. Похоже, вы ожидаете, что вместо этого заменит /mnt/disk/root.

Перед попыткой перезаписать подтом /mnt/disk/root его необходимо переместить или удалить (например, mv /mnt/disk/root /mnt/disk/ резервное копирование корня во время восстановления). Затем выполните:

btrfs subvolume snapshot /mnt/disk/root/snapshots/2015-05-01 /mnt/disk/

А затем:

mv /mnt/disk/2015-05-01 /mnt/disk/root
0
19.03.2017, 12:14
1 ответ

С bash :

A=10
B=20
C=0
D=1

for var in A B C D; do
    if [ ${!var} -eq 0 ]; then
        echo "$var value is 0"
    else
        echo "Ok"
    fi
done

Используйте -eq для сравнения целочисленных значений (или используйте (($ {! Var} == 0)) или ((! $ {! Var})) , что то же самое), и используйте $ {! Var} , чтобы получить значение переменной, имя которой хранится в переменной var .

Или немного лучше, но по сути то же самое (все еще в bash ):

for var in A B C D E; do
    case ${!var} in
        0) printf '%s value is 0\n' "$var" ;;
        *) echo 'Ok' ;;
    esac
done

Это обрабатывает значения как строки, а не как целые числа.

6
28.01.2020, 02:15

Теги

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