我正在尝试在我的目录中执行单词搜索,查看所有文本文件,并尝试查找长度为14的单词。
$ ls *.txt | & grep -o -w '\w\{14,14\}'
当我在命令行中运行时,这可以正常工作。
现在我想在.sh文件中运行同样精确的命令
在我的档案中,我有这个:
eval $("ls *.txt | & grep -o -w '\w\{14,14\}'")
然后我收到此错误:
test.sh:第1行:ls * .txt | &安培; grep -o -w' \ w {14,14}':找不到命令
问题是我的文字中有转义字符吗?我怎样才能得到它,以便当我运行.sh文件时,我得到的输出就像在命令行上运行它一样?
答案 0 :(得分:2)
您无需eval
将其放入shell脚本中。 eval
是邪恶的,应该像瘟疫一样避免(例如,只有在你自己发明了解毒剂时才使用)。您的陈述可以简单地更改为grep -o -w '\w\{14,14\}' *.txt
,并逐字记录到脚本文件中。
了解Bash脚本的基本原理和细微之处的优秀网站是Greg's Wiki。