списки аргументов сборки, содержащие пробел

По идее стоит рассмотреть еще один элемент, на который вы накладываете обложку и делаете этот элемент в два раза больше. Например, вы можете использовать псевдоэлемент.

Я сохранил переполнение, чтобы увидеть результат:

.box {
  width:150px;
  height:150px;
  border:2px solid;
  margin:100px;
  position:relative;
  /* overflow:hidden;*/
  
}
.box:before {
  content:"";
  position:absolute;
  z-index:-1;
  top:50%;
  left:50%;
  background:var(--img) center/cover no-repeat;
  width:200%;
  height:200%;
  transform:translate(-50%,-50%);
  
  border:2px solid red;
}
<div class="box" style="--img:url(https://picsum.photos/200/350?image=1069)"></div>

То же со шкалой:

.box {
  width:150px;
  height:150px;
  border:2px solid;
  margin:100px;
  position:relative;
  /* overflow:hidden;*/
  
}
.box:before {
  content:"";
  position:absolute;
  z-index:-1;
  top:0;
  left:0;
  background:var(--img) center/cover no-repeat;
  width:100%;
  height:100%;
  transform:scale(2);
  
  border:2px solid red;
}
<div class="box" style="--img:url(https://picsum.photos/200/350?image=1069)"></div>

9
задан tarsius 17 January 2009 в 20:39
поделиться

4 ответа

Существует (по крайней мере) два способа сделать это:

  1. Используйте массив и разверните его использование "${array[@]}":

    bar() {
        local i=0 args=()
        for arg in "$@"
        do
            args[$i]="prefix $arg"
            ((++i))
        done
    
        foo "${args[@]}"
    }
    

    Так, что мы изучили? "${array[@]}" к ${array[*]} что "$@" к $*.

  2. Или если Вы не хотите использовать массивы, необходимо использовать eval:

    bar() {
        local args=()
        for arg in "$@"
        do
            args="$args \"prefix $arg\""
        done
    
        eval foo $args
    }
    
20
ответ дан 4 December 2019 в 08:17
поделиться

Используйте массивы (одна из скрытых функций в Bash).

2
ответ дан 4 December 2019 в 08:17
поделиться

Можно использовать массивы, как Вы предполагаете с маленькой измененной деталью. Нечто вызова строки должно читать

 foo "${args[@]}"
0
ответ дан 4 December 2019 в 08:17
поделиться

У меня была проблема с этим слишком также. Я писал сценарий удара для резервного копирования важных файлов на моем компьютере окон (cygwin). Я попробовал подход массива также и все еще имел некоторые проблемы. Не уверенный точно, как я зафиксировал его, но здесь являюсь частями моего кода, которые важны в случае, если это поможет Вам.

WORK="d:\Work Documents\*"
#   prompt and 7zip each file
for x in $SVN $WEB1 $WEB2 "$WORK" $GRAPHICS $W_SQL
do
    echo "Add $x to archive? (y/n)"
    read DO
    if [ "$DO" == "y" ]; then
        echo "compressing $x"
        7zip a $W_OUTPUT "$x"
    fi
    echo ""
done
0
ответ дан 4 December 2019 в 08:17
поделиться
Другие вопросы по тегам:

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