Я ищу способ напечатать звездочку в строке, переданной программе в оболочке. Эти проблемы похожи, но я не смог заставить ни одно из решений работать в моем случае: как мне отобразить звездочки на выходе , Печать звездочки (*) в оболочке bash , Как мне выбрать подстановочный знак / звездочку в bash? .
У меня есть следующий скрипт:
#!/bin/bash
# First function
function()
{
typeset -r str=$1
typeset -i N=$2
typeset -i i=0
while [[ $i -lt $N ]];
do
echo $str| sed "s/<token>/$i/g"
(( i+=1 ))
done
}
# 'main' function
doStuff()
{
foo.pl << EOF
some words $(function "input string with asterisk * and some <token> after it" 123)
some more words
EOF
[ $? -eq 0 ] || logerror "Function 'doStuff' failed."
}
doStuff
exit 0
При запуске скрипта звездочка заменяется результатами echo *
.
Чтобы исправить это, я попытался объявить ASTERISK='*'
и подставить его, а также просто изменить вызов функции на $(function "input string with asterisk "'*'" and some <token> after it" 123)
, но тоже не сработал.
Я подозреваю, что проблема заключается в операторе echo
внутри function
, но я не совсем уверен, как его решить, поэтому мой вопрос будет, если есть какой-либо способ привести str
в function
, чтобы не допустить для интерполяции, когда она находится в пределах function
?