Преобразование аргумента в верхний регистр для передачи в качестве переменной

ImageMagick import может автоматически сделать снимок экрана с корнем Xorg, а с -crop только нужную часть будет использовано. xrandr предоставляет параметр для обрезки .

Чтобы минимизировать накладные расходы, вам следует создать команду import один раз, а не запрашивать с использованием отображаемого имени каждый раз, когда вы делаете снимок экрана:

mapfile -t displays < <(xrandr | grep ' connected')
get_date='`date +"%Y%m%d-%H%M%S"`'
for (( i=0; i<${#displays[@]}; i++)); do
  name=`echo ${displays[i]} | cut -d " " -f 1`
  crop=`echo ${displays[i]} | cut -d " " -f 3`
  echo import -silent -window root -crop ${crop} \"${name}-${get_date}.png\"
done

Пояснения к файлу карты и циклу for можно найти в ] этот вопрос .

Это даст вам следующие команды:

import -silent -window root -crop 1920x1080+0+0 "DFP5-`date +"%Y%m%d-%H%M%S"`.png"
import -silent -window root -crop 1920x1080+1920+0 "DFP7-`date +"%Y%m%d-%H%M%S"`.png"

, которые теперь вы можете использовать в цикле while для таймлапса (остановитесь, нажав ctrl + c ).

while [ 1 ]; do
  import ...
  sleep 1 # for 1 second delay between screenshots
done

Это единственный известный мне метод. Надеюсь, есть способы с меньшими накладными расходами.

5
21.03.2017, 18:24
2 ответа

В Bash вы можете объявить переменную в верхнем регистре с помощью -u , и затем она автоматически преобразуется.

$ declare -u a
$ b=abcd
$ a=$b
$ echo $a
ABCD
9
27.01.2020, 20:31

Использование bash (4.0+) внутри скрипта:

newvarname=${3^^}

Использование tcsh:

set newvarname = $3:u:q

Использование zsh:

# tcsh-like syntax:
newvarname=${3:u} # or just $3:u
# native syntax:
newvarname=${(U)3}

Использование tr вместо функций оболочки (хотя и ограничены однобайтовыми буквами только в некоторых реализациях tr , таких как GNU):

newvarname=$(printf "%s" "$3" | tr '[:lower:]' '[:upper:]')

На этой странице обобщены многие функции различных оболочек UNIX, включая манипуляции с текстом: http://hyperpolyglot.org/unix-shells .

14
27.01.2020, 20:31

Теги

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