一个bashvariables可以是多行吗?

我写了一个脚本来列出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 

检查这是否有助于解决您的问题。