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