Как заключить значение переменной в кавычки|апострофы
Есть код
#!/bin/bash
read commandName #Название
read command #Команда
alas="alias ${commandName}=${command}"
echo "${alas}" >> ~/.bashrc
. ~/.bashrc #Перезагрузка /.bashrc
который должен добавлять алис и перезагружать /.bashrc. Вопрос можно ли как то заключить вторую часть алиса в кавычки, апострофы?
Ответы (1 шт):
Есть одинарные (') и двойные (") кавычки. Разница в том, что если внешние кавычки двойные, то переменные ($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