Возможно, что библиотеки glib / GTK + в 16.04 слишком стары для Gimp 2.10.x, так что хватит; где библиотеки (и другие зависимости) содержатся в [оснастке], возможно, самый простой вариант.
2.10.0 доступен в виде оснастки ( https://snapcraft.io/gimp ), которая будет автоматически обновляться до более поздней привязки, если / когда более поздние выпуски будут «привязаны». [116 ]
-
Джои Снеддон показал, что Gimp 2.10.4 доступен через Flathub
GIMP на Flathub: https://flathub.org/apps/details/ org.gimp.GIMP
Также из статьи Джоя Снеддона неофициальный GIMP AppImage или GIMP PPA Отто Кесселгулаша могут предоставлять более поздние версии (2.10.3 и 2.10.2)
2.10 .3 неофициальный GIMP AppImage https://github.com/aferrero2707/gimp-appimage
2.10.2 GIMP PPA Отто Кессельггулаша: https://launchpad.net/~ Otto-kesselgulasch / + архив / убунт / каркасный
Я нашел рабочее решение здесь: https://af-design.com/2009/07/07/loading-data-into-bash-variables/
if [ -f $SETTINGS_FILE ];then
. $SETTINGS_FILE
fi
Учитывая, что вы хотите, чтобы все содержимое вашего текстового файла было сохранено в вашей переменной, вы можете использовать:
#!/bin/bash
file="/path/to/filename" #the file where you keep your string name
name=$(cat "$file") #the output of 'cat $file' is assigned to the $name variable
echo $name #test
Или, в чистом виде:
#!/bin/bash
file="/path/to/filename" #the file where you keep your string name
read -d \x04' name < "$file" #the content of $file is redirected to stdin from where it is read out into the $name variable
echo $name #test
$name
переменная является строкой из Вашего файла, присвоенного с помощью cat $file
команда. Что не является ясным или настолько трудным понять?
– Atmaram Shetye
18.04.2020, 19:50
$file
переменная, если you' ре только с помощью него однажды для загрузки $name
переменная, просто используйте cat /path/to/file
– dureuill
18.04.2020, 19:51
echo $name
. Я использую его только для теста. Затем можно использовать $name
переменная для последующей обработки где угодно, Вы хотите в своем сценарии.
– paxdiablo
18.04.2020, 19:52
Если вы хотите использовать несколько строк, вы можете использовать:
path="/foo/bar";
for p in `cat "$path"`;
do echo "$p" ....... (here you would pipe it where you need it)
ИЛИ
Если вы хотите, чтобы пользователь указал файл
read -e "Specify path to variable(s): " path;
for p in 'cat "$path"';
do echo "$p" ............................
Один из альтернативных способов сделать это - просто перенаправить стандартный ввод в ваш файл, где у вас есть весь пользовательский ввод в порядке, ожидаемом программой. Например, с помощью программы (называемой script.sh
)
#!/bin/bash
echo "Enter your name:"
read name
echo "...and now your age:"
read age
# example of how to use the values now stored in variables $name and $age
echo "Hello $name. You're $age years old, right?"
и входного файла (называемого input.in
)
Tomas
26
вы можете запустить это из терминала в одном из следующие два способа:
$ cat input.in | ./script.sh
$ ./script.sh < input.in
и это будет эквивалентно простому запуску сценария и вводу данных вручную - будет выведена строка «Здравствуйте, Томас. Вам 26 лет, верно?».
Как Раду Рэдяну уже уже предложил , вы можете использовать cat
внутри вашего скрипта для чтения содержимого файла в переменную - в этом случае вам нужен каждый файл содержать только одну строку, содержащее только то значение, которое вы хотите для этой конкретной переменной. В приведенном выше примере вы разбили входной файл на файл с именем (скажем, name.in
) и файл с возрастом (скажем, age.in
) и изменили строки read name
и read age
на name=$(cat name.in)
и age=$(cat age.in)
соответственно.
vh=$(awk "NR==3 {print;exit}" /var/www/test.txt)
. Вам тогда сохранят строку в переменной $vh
, таким образом, можно будет использовать его как так: mkdir "/var/www/$vh"
- это создаст папку с указанным именем внутри/var/www.
– Vality
18.04.2020, 19:53
Для чтения переменных из файла мы можем использовать команду source
или .
.
Предположим, что файл содержит следующую строку
MYVARIABLE="Any string"
, затем мы можем импортировать эту переменную, используя
#!/bin/bash
source <filename>
echo $MYVARIABLE
<filename>
, будет выполнено в Вашей оболочке, такой как rm -rf /
, который мог быть очень опасным.
– laurent
18.04.2020, 19:53
sed
, чтобы добавить local
ключевое слово и сделать сценарий немного более безопасным и не загрязнить глобальную область видимости. Таким образом в функция делает cat global_variables.sh | sed -e 's/^/local /' > local_variables.sh
и затем использует . ./local_variables.sh
. Независимо от того, что Вы импортируете в функции, только будет доступно в той функции. Обратите внимание, что это принимает global_variables.sh
, только содержит одну переменную на строку.
– laurent
18.04.2020, 19:53
name=$(<"$file")
Из man bash:1785
эта подстановка команд эквивалентна name=$(cat "$file")
, но быстрее.
Я использую это, чтобы получить одну переменную из файла
GET_VAR=$(grep --color=never -Po "^${GET_VAR}=\K.*" "${FILE}" || true)
Когда GET_VAR
не найден в ${FILE}
, он будет пустым, а не вызовет ошибку благодаря || true
.
Он использует grep -P
, который находится в GNU grep, но не используется по умолчанию во всех grep на момент написания этого.
Из вашего скрипта вы можете сделать это:
read name < file_containing _the_answer
Вы даже можете сделать это несколько раз, например. в петле
while read LINE; do echo "$LINE"; done < file_containing_multiple_lines