我正在创建一个变量,并且创建它的一部分涉及sed -n
。我遇到的问题是我不确定它是否正常工作。
y=$(ls -Ap | grep "/$" | sed -n "$ip")
是第一行并创建y。
但是当我跑步时
echo $y
我根本没有输出和空格。所以我不确定sed是否正常工作,如果不能解决它。
提前致谢。
答案 0 :(得分:3)
As User 123 mentioned,问题是bash尝试展开$ip
而不是$i
。您可以在变量名称周围使用花括号来避免这种情况,例如${i}
。
但是,我建议不要使用管道解决方案:
grep
或sed
就足够了。我建议使用find
:可以通过find
的单次调用来完成:
find -mindepth 1 -maxdepth 1 -type d -name "*${i}*"
确保${i}
已设置且不为空!否则-name
将扩展为-name "**"
,这将匹配任何内容。您可以使用parameter substitution语法执行此操作:
find -mindepth 1 -maxdepth 1 -type d -name "*${i:-nonexistent}*"
确保nonexistent
不存在! ;)