bash - ack 命令没有从 bash 脚本中的当前目录返回输出
问题描述
(已编辑)假设我有一些这样的目录结构:
lv1_directory
| file_contain_word_something.txt
| lv2_directory
所以现在我在 lv2_directory 我有这样的代码:
#!/bin/bash
findfile=$(ack -n 'something' . | wc -l)
cd ..
ls
echo $findfile
当我运行脚本时它给了我
lv2_directory file_contain_word_something.txt
0
但是如果我没有将它分配给变量它就像魅力一样
#!/bin/bash
cd ..
ls
ack -n 'something' | wl -l
它给了我
lv2_directory file_contain_word_something.txt
1
所以我必须把它改成这个才能工作
#!/bin/bash
findfile=$(ack -n 'something' .. | wc -l)
cd ..
ls
echo $findfile
它给了我想要的结果
lv2_directory file_contain_word_something.txt
1
我如何使用第一个脚本并给我想要的结果?
解决方案
我认为这里的问题是:
您目前在lv2_directory
其中没有任何与字符串匹配的文件'something'
。所以当你ack
从这个目录本身开火时,你会得到0
行数。然后你做cd..
。
#!/bin/bash
findfile=$(ack -n 'something' . | wc -l)
cd ..
ls
echo $findfile
现在,在您的下一个片段中:
#!/bin/bash
cd ..
ls
ack -n 'something' | wl -l
你是先做的cd
,所以你是进去lv1_directory
的,里面有文件file_contain_word_something.txt
。然后你解雇你的ack
. 现在它something
在txt
文件中找到,因此将您1
作为输出(假设只有 1 个匹配行)。
推荐阅读
- laravel - Laravel eloquent - 合并父级 $appends
- typescript - 如何在 TypeScript 中完成这个简单的界面?
- linux - 有什么不对吗?我想从linux中的用户输入比较变量中的许多单词
- java - 是否有推荐的方法来获取所有信息?
- android - 为什么背景颜色不能分配给视图
- json - 无法解组 golang 响应
- android - 如何在 Android 中制作自定义范围栏?
- android - 为 Unity 游戏中的关卡单独获取 Firebase 分析
- react-native - 隐藏图像后面的按钮
- gatsby - Strapi 从 Gatsby 获取数据时返回 404 错误