Как заключить значение переменной в кавычки|апострофы

Есть код

#!/bin/bash

read commandName #Название

read command #Команда


alas="alias ${commandName}=${command}"

echo "${alas}" >> ~/.bashrc

. ~/.bashrc #Перезагрузка /.bashrc

который должен добавлять алис и перезагружать /.bashrc. Вопрос можно ли как то заключить вторую часть алиса в кавычки, апострофы?


Ответы (1 шт):

Автор решения: Sheridan

Есть одинарные (') и двойные (") кавычки. Разница в том, что если внешние кавычки двойные, то переменные ($variable или ${variable}) внутри них раскроются и подставится значение переменной. Если внешние кавычки одинарные - подставится имя переменной. То есть вот так:

sheridan$ a="1"
sheridan$ b="$a"
sheridan$ c='$a'
sheridan$ echo $b
1
sheridan$ echo $c
$a

Далее, двойные кавычки внутри можно экранировать обратным слешем (\")

Следовательно вам нужно сделать так:

sheridan$ commandName="ls_my"
sheridan$ command="ls"
sheridan$ my_alias="alias ${commandName}=\"${command}\""
sheridan$ echo $my_alias
alias ls_my="ls"

Апострофы (`) в bash - совсем про другое. То что внутри апострофов - выполнится и вернет результат:

sheridan$ a=`uname`
sheridan$ echo $a
Linux

Но я предпочитаю вместо апострофов использовать конструкцию $():

sheridan$ a=$(uname)
sheridan$ echo $a
Linux
→ Ссылка