Bash脚本 - 在unix

时间:2018-04-06 01:09:21

标签: bash shell unix

我正在尝试在我的目录中执行单词搜索,查看所有文本文件,并尝试查找长度为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文件时,我得到的输出就像在命令行上运行它一样?

1 个答案:

答案 0 :(得分:2)

您无需eval将其放入shell脚本中。 eval是邪恶的,应该像瘟疫一样避免(例如,只有在你自己发明了解毒剂时才使用)。您的陈述可以简单地更改为grep -o -w '\w\{14,14\}' *.txt,并逐字记录到脚本文件中。

了解Bash脚本的基本原理和细微之处的优秀网站是Greg's Wiki