Bash 脚本结果
Bash script result
谁能解释一下下面的脚本是做什么的?
#!/bin/bash
for F in *.txt; do
K=`grep abc $F`
echo $K
if ["$K" != ""]; then
echo $F
fi
done
我测试了它,当它找到一个包含 "abc" 字符串的 txt 文件时,出现提示
`"./a.sh: line 5: [abc: command not found"`
错误,否则出现不包含"abc"字符串的txt文件名
该脚本应该遍历当前目录中的所有“.txt”文件,为 abc
搜索它们,回显结果,如果找到该字符串,则打印文件名。然而,它有一个语法错误(你需要在 [
和 ]
周围加空格),用空格破坏文件名,而且比需要的更复杂。更好的版本是:
#!/bin/bash
for F in *.txt; do
grep abc "$F" && echo "$F"
done
留下一个spaceafter[
和一个spacebefore]
解决错误:
#!/bin/bash
for F in *.txt; do
K=`grep abc $F`
echo $K
if [ "$K" != "" ]; then
echo $F
fi
done
你得到 [abc: command not found
是因为在你的 if
条件下 [
之后和 ]
之前没有 space。
你甚至不需要 for
循环,你可以使用 grep -l
:
grep -l 'abc' *.txt
您的脚本遍历当前目录中的所有 .txt
文件以搜索模式并在匹配的位置显示文件名。参考本教程http://www.tutorialspoint.com/unix_commands/grep.htm
您的代码此处有语法错误
if ["$K" != ""]
您需要在 [
之后和 ]
之前放置一个 space 因此使用这个
if [ "$K" != "" ]
谁能解释一下下面的脚本是做什么的?
#!/bin/bash
for F in *.txt; do
K=`grep abc $F`
echo $K
if ["$K" != ""]; then
echo $F
fi
done
我测试了它,当它找到一个包含 "abc" 字符串的 txt 文件时,出现提示
`"./a.sh: line 5: [abc: command not found"`
错误,否则出现不包含"abc"字符串的txt文件名
该脚本应该遍历当前目录中的所有“.txt”文件,为 abc
搜索它们,回显结果,如果找到该字符串,则打印文件名。然而,它有一个语法错误(你需要在 [
和 ]
周围加空格),用空格破坏文件名,而且比需要的更复杂。更好的版本是:
#!/bin/bash
for F in *.txt; do
grep abc "$F" && echo "$F"
done
留下一个spaceafter[
和一个spacebefore]
解决错误:
#!/bin/bash
for F in *.txt; do
K=`grep abc $F`
echo $K
if [ "$K" != "" ]; then
echo $F
fi
done
你得到 [abc: command not found
是因为在你的 if
条件下 [
之后和 ]
之前没有 space。
你甚至不需要 for
循环,你可以使用 grep -l
:
grep -l 'abc' *.txt
您的脚本遍历当前目录中的所有 .txt
文件以搜索模式并在匹配的位置显示文件名。参考本教程http://www.tutorialspoint.com/unix_commands/grep.htm
您的代码此处有语法错误
if ["$K" != ""]
您需要在 [
之后和 ]
之前放置一个 space 因此使用这个
if [ "$K" != "" ]