您好我有一个命令/功能是一个脚本,用户名称分配给变量 这样:
var1=dedwards torontobgs NJVMTTS2 srounce jstickler
echo $var1 produces >> dedwards torontobgs NJVMTTS2 srounce jstickler
如何编写命令以查看用户ID" NJVMTTS2"存在于变量中?似乎变量被视为一个字符串而不是单个字符串?
我知道这很简单但不能让它工作 我想做的是如下:
如果在$ VAR1中存在$ 1(由anther函数传递) 然后做点什么
so if $1 = NJVMTTS2
and if NJVMTTS2 contained in the $VAR1
Then do echo "yes" else echo "no"
答案 0 :(得分:1)
只是标准模式匹配。
var1='dedwards torontobgs NJVMTTS2 srounce jstickler'
if [[ $var1 = *NJVMTTS2* ]]; then
…
fi
或者,为了便携性:
case "$var1" in
*NJVMTTS2*) …;;
esac
如果NJVMTTS2在一个参数中,你应引用参数扩展,但你必须小心不要引用模式:
case "$var1" in
*"$1"*) …;;
esac
答案 1 :(得分:0)
首先,应引用您的作业,否则var1将仅包含第一个单词。
var1="dedwards torontobgs NJVMTTS2 srounce jstickler"
然后你可以在变量中找到名字:
if echo $var1 | grep '\bNJVMTTS2\b' >/dev/null; then echo Found it; fi
\b
字边界符号确保您查找整个单词,从而匹配NJVMTTS2
但不匹配fooNJVMTTS2bar
如果fooNJVMTTS2bar
也正常,则另一个答案将有效。 @ Kojiro的解决方案还有一个优点,就是它不使用外部程序,它是纯粹的外壳。