我有一个存储字符串的变量,并且需要检查它是否包含多行内容:
var=`ls "$sdir" | grep "$input"`
伪代码:
while [ ! $var's number of lines -eq 1 ]
do something
这是我的检查方法。使用echo $var | wc -l
无法正常工作-它总是显示1
,即使有3
个。
echo -e
也无法正常工作。
if [ -z "$var" ]; then printf '%s\n' '0'; else printf '%s\n' "${var%$'\n'}" | wc -l; fi
。尝试使用var=
(没有行),var='foo'
和var=$'foo\n'
(在 *nix 意义上都是一行)。 - l0b0LINE_COUNT=$(wc -l <<< "${var}")
- lucifuriousecho -n
只会将计数减少一次。 @lucifurious 命令echo $(wc -l <<< "${NONEXISTENTVAR}")
仍然返回 1,而不是0。 - Julian