我有以下
#!/bin/bash
aprograms=`pgrep a`
echo $aprograms
输出:
alejandro@ubuntu:~$ bash test.sh
2 6 7 8 12 13 16 17 20 27 ...
我想控制$ aprograms中是否有值。 我尝试了以下(我不知道它是否是一个有效的方法):
if [ $value in $aprograms ];then
echo "found"
但不起作用。是否有正确的方法来控制$ aprograms中是否有值?
答案 0 :(得分:1)
#!/bin/bash
function foo () {
echo 2 6 7 8 12 13 16 17 20 27
}
function search_value () {
for i in $2; do {
if [ $i -eq $1 ]; then {
echo "found"
} fi
} done
}
search_value 13 "$( foo )"
只需使用输入程序更改foo
:
search_value 13 "$( pgrep a )"
答案 1 :(得分:1)
你可以使用bash的parameter expansion。
shopt -s extglob
var="2 6 7 8 12 13 16 17 20 27"
if [ "${var/17?( )/}" != "$var" ] ; then echo "match"; fi
答案 2 :(得分:1)
if [[ " $aprograms " =~ \ $value\ ]] ; then
echo "found"
fi
此外,还有grep
if pgrep a | grep -q -w "$value" ; then
echo "found:
fi
答案 3 :(得分:0)
-eq
等于
if [ "$a" -eq "$b" ]
答案 4 :(得分:0)
由于pgrep
每行输出一个PID,您可以使用grep
找到您要查找的PID。
#!/bin/bash
aprograms=$(pgrep a)
echo "$aprograms"
if grep -Fxqs "$value" <<< "$aprograms"
then
echo "found"
fi
在扩展变量时始终引用变量以保留空格。
-F
的{{1}}选项将模式用作固定字符串而不是正则表达式。 grep
选项与整行匹配,因此较小的字符串或数字与较大的字符串或数字不匹配。选项-x
和-q
会抑制输出和错误输出。如果您的-s
版本没有这些版本,请使用:
grep