Echo无法打印“*。*”字符串

时间:2018-03-19 11:06:39

标签: linux bash shell sh

我需要在shell脚本中的“”字符串(即'*')中获取第一个块。我发现它不是打印字符串而是显示当前目录中所有文件的列表。

如何克服这个问题?

主要目的是将字符串“asterisk.asterick”(从/etc/rsyslog.conf中读取)更改为“* .debug”,这里第一个字段我需要保持原样,只需要更改第二个字段。

root@xyz-node:/tmp# ccvv=*.*
root@xyz-node:/tmp# echo ccvv
ccvv
root@xyz-node:/tmp# echo $ccvv
new_script.sh rsyslog.conf rsyslog.confe tmp.8R7bE0tYbg
root@xyz-node:/tmp#
root@xyz-node:/tmp#
root@xyz-node:/tmp# echo $ccvv|cut -d "." -f1
new_script

3 个答案:

答案 0 :(得分:3)

实际上你必须引用变量本身。 echo "$ccvv"

答案 1 :(得分:1)

据我理解......

$ echo "*.*"
*.*

$ ccvv="*.*"

$ echo $ccvv
*.*

或者

答案 2 :(得分:0)

您可以使用sed替换:

sed -i.bak 's/\([a-zA-Z0-9*]\+\.\).*/\1debug/g' InputFile

此处.bak将在替换之前创建名为InputFile.bak的备份文件。

示例输入:

some text
*.conf
some text
some.text

输出:

some text
*.debug
some text
some.debug