我写了一个脚本来列出路径条目并按关键字过滤它们。我设法让它工作,但我不得不在临时文件中写入列表,因为我不能将它存储在内存中,同时保持换行符。是否有更好/更合适的解决方案?
#! /bin/bash
tr ':' '\n' <<< $PATH > tmp
if (( $# > 0 )); then
for W
do
grep $W < tmp
done
else
cat tmp
fi
rm tmp
答案 0 :(得分:3)
是的,变量可以包含换行符。您需要在使用变量时引用变量。您的脚本可以写成:
tmp=$(tr ':' '\n' <<< $PATH)
if (( $# > 0 )); then
for W; do
grep $W <<< "$tmp"
done
else
echo "$tmp"
fi
答案 1 :(得分:1)
以下内容将打印PATH
中与keyword
中的正则表达式匹配的目录。它在子shell中运行,以隔离对IFS
所做的更改。
(IFS=:;
for W in $PATH; do
if [[ $W =~ $keyword ]]; then
echo "$W"
fi
done
)
答案 2 :(得分:0)
for W in `echo $PATH | tr ':' '\n'`;
do
grep <Search pattern> $W
done
检查这是否有助于解决您的问题。