Скажем, я объявляю переменную var как var="ls | grep a". Тогда я ожидал бы, что команда $var будет работать точно так же, как ls | grep a, но вместо этого символ | считывается как экранированный \|, так что он скорее печатает ошибку, говоря, что ни один файл с именем \|, grep или a.
Мой вопрос: как я могу заставить Bash интерпретировать | в значении var как не экранированное?
Я должен использовать его в case, таком как
var1="str1|str2"
var2="str3|str4"
case $option in
${var1} ) echo "It works! 1" ;;
${var2} ) echo "It works! 2" ;;
* ) echo "It does not work"
esac
(edit2): и верните его It works! 1, если $option является либо str1, либо str2 и It works! 2, если является либо str3, либо str4. Это потому, что я пишу функцию, в которой случайные шаблоны могут меняться в соответствии с пользовательскими вводами.
Хотя я не думаю, что это важно знать, я использую lxterminal на Lubuntu 12.04 и 4.2.25(1)-release.
Любая помощь приветствуется, спасибо!