У меня есть строка в одинарных кавычках. Внутри которого я хочу вставить переменную и развернуть ее. Я знаю, что в bash расширение переменных работает только с двойными кавычками. Но я все еще не могу заставить его работать.
e.g.:
TOOLS_DIR="/tools"
echo '#define SYS_VIMRC_FILE "${TOOLS_DIR}/etc/vimrc"' >> src/feature.h
Результат, который я получаю, выглядит следующим образом:
#define SYS_VIMRC_FILE "${TOOLS_DIR}/etc/vimrc"
И ожидаемый результат:
#define SYS_VIMRC_FILE "/tools/etc/vimrc"
Как можно Я решаю эту проблему?
Ваши двойные кавычки технически все еще в одинарных кавычках, таким образом, никакого расширения не может произойти. Можно закрыть одинарные кавычки прежде, чем запустить двойные кавычки и сделать реверс в конце того внутреннего раздела для достижения того, что Вы хотите:
TOOLS_DIR="/tools"
echo '#define SYS_VIMRC_FILE "'"$TOOLS_DIR"'"/etc/vimrc' >> src/feature.h
, Кроме того:
TOOLS_DIR="/tools"
printf '#define SYS_VIMRC_FILE "%s"/etc/vimrc\n' "$TOOLS_DIR" >> src/feature.h
Ваша переменная не расширится, потому что Вам разграничили строку с '
, пробуют heredoc
TOOLS_DIR="/tools"
cat <<- EOF >> src/feature.h
#define SYS_VIMRC_FILE "${TOOLS_DIR}/etc/vimrc"
EOF
, или Вы могли измениться на "
и выйти из внутреннего "
TOOLS_DIR="/tools"
echo "#define SYS_VIMRC_FILE \"${TOOLS_DIR}/etc/vimrc\"" >> src/feature.h
gsettings
didn' t работа: james@james-Streacom:~$ gsettings set org.gnome.gnome-screenshot auto-save-directory `file:///media/james/Seagate Expansion Drive/Downloads/Screenshots`
. Это просто дало мне >
подсказка. Но изменяя местоположение через редактора Dconf согласно @pomsky' s ответ здесь работал наряду с отключением ярлыка по умолчанию и заменой того же самого ярлыка с gnome-screenshot
команда (или с одним из it' s опции как -w
или -a
).
– James Ray
28 October 2017 в 13:55