Bash: скрыть глобальную переменную, используя локальную переменную с тем же именем

Хотя это возможно с помощью CSS, лучшим подходом было бы использование встроенного SVG с маскировкой SVG . Этот подход имеет некоторые преимущества перед CSS:

CodePen Demo: Маска текста SVG

transparent text clipping background [/g9]

body,html{height:100%;margin:0;padding:0;}
body{
  background:url('https://farm9.staticflickr.com/8760/17195790401_94fcf60556_c.jpg');
  background-size:cover;
  background-attachment:fixed;
}
svg{width:100%;}

  
    
      
      SVG
      Text mask
    
  
      

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

body,html{height:100%;margin:0;padding:0;}
body{
  background:url('https://farm9.staticflickr.com/8760/17195790401_94fcf60556_c.jpg');
  background-size:cover;
  background-attachment:fixed;
}
svg{width:100%;}

  
    
      SVG
      Text mask
    
    
      
      
    
  
  
  

1
задан Cyker 15 January 2019 в 18:09
поделиться

2 ответа

В Bash 5.0 появилась новая опция оболочки localvar_inherit , позволяющая локальным переменным с одинаковым именем наследовать значение переменной с таким же именем в предыдущей области видимости:

[ 110]

со следующим выводом:

Before call: global
In call: global
In call, after setting: local
After call: global

Если у вас нет Bash 5.0, вы должны установить значение в функции, как вы делали в своем вопросе, с тем же результатом.

0
ответ дан Benjamin W. 15 January 2019 в 18:09
поделиться

Расширение происходит до назначения (в начале), поскольку в документации указано :

Расширение выполняется в командной строке после того, как оно разбито на слова.

Таким образом, поведение должно быть предсказуемым (и определенным). В local a=$a при расширении $a он все еще является глобальным. Выполнение команды (присваивание / объявление) происходит позже (когда $a уже заменено ее значением).

Однако я не уверен, что это не смутило бы наличие по существу двух разных переменных (зависящих от области видимости) с одним и тем же именем (т. Е. Кажущимся одним и тем же). Поэтому я предпочел бы поставить под сомнение целесообразность такого подхода к методам кодирования / удобочитаемости / простоте навигации.

0
ответ дан Ondrej K. 15 January 2019 в 18:09
поделиться
Другие вопросы по тегам:

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