Как включить и/или оценить переменную в bash?

Если вы хотите попробовать загрузить Windows еще раз...

Это работает, только если ваш раздел EFI не поврежден.

  1. Запустите lsblk -no UUID /dev/sda3и запишите UUID.

  2. Отредактируйте /etc/grub.d/40_customи измените 67E3-17EDна свой UUID:

    menuentry "Windows 10" {
        insmod part_gpt
        insmod fat
        set root='hd0,gpt1'
        search --fs-uuid --no-floppy --set=root 67E3-17ED
        chainloader /EFI/Microsoft/Boot/bootmgfw.efi
    }
    
  3. Обновлениеgrub.cfg

    Пожалуйста, проверьте, какой файл существует, т.е. ls /boot/grub2/grub.cfgили ls /boot/efi/EFI/fedora/grub.cfg. Это, наверное, первый.

    Если вы загружались со старой версии BIOS, это должно быть

    grub2-mkconfig -o /boot/grub2/grub.cfg
    

    и из UEFI

    grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
    
  4. Перезагрузка и проверка

1
03.05.2020, 15:01
1 ответ

Много способов:

  1. Передать переменную в качестве входных данных для perl one liner:

    perl -le 'print "\$x is $ARGV[0]"' "$x"
    
  2. Экспортируйте переменную, а затем используйте хэш Perl %ENVдля ее печати:

    export x="$1"
    perl -le 'print "\$x is $ENV{x}"' 
    
  3. Используйте двойные кавычки для Perl-скрипта:

    perl -le "print \"\\\$x is $x\""
    

Вот как они будут выглядеть в сценарии оболочки:

#!/bin/bash

export x=$1

echo "Approach #1"
perl -le 'print "\$x is $ARGV[0]"' "$x"


echo "Approach #2"
perl -le 'print "\$x is $ENV{x}"' 


echo "Approach #3"
perl -le "print \"\\\$x is $x\""

Если я сохраню приведенный выше скрипт как foo.shи запущу его с "foo" в качестве аргумента, я получу:

$ foo.sh foo
Approach #1
$x is foo
Approach #2
$x is foo
Approach #3
$x is foo
1
28.04.2021, 23:16

Теги

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