程序小白,咨询个 Linux Shell 的语法。
需求:如果变量 VAR1 的值为字符 A、B、C 其中的一个,并且变量 VAR2 的值为字符 D、E、F 中的一个。
那么输出 Y ,
否则输出 N。
我的代码:
if [ ${VAR1} == XXX ] && [ ${VAR2} == YYY ]
then
echo "Y"
else
echo "N"
fi
请问下 XXX 和 YYY 那里应该填什么呢?
或者有其他更合适的写法吗?
多谢。 用grep好像可以实现?
x=`echo $VAR1 |grep `
y=`echo $VAR2 |grep `
if [ ${#x} -gt 0 ] && [ ${#y} -gt 0 ]
then
echo "Y"
else
echo "N"
fi
回 1楼(focky) 的帖子
多谢回答不过这种写法是否有可能会出现一些小问题。
比如:
希望 VAR1 匹配 AB,BZ或CD 时,输出 Y,
如果按照上面的写法,那么在 VAR1 = BZ 或者 ZC 的时候,if 条件也是成立的,会输出 Y 。
root@SERVER:/home# cat if
A=$1
if [ ${A} == ]
then
echo "Y"
else
echo "N"
fi
root@SERVER:/home# sh if A
if: line 3: [: missing `]'
if: line 3: B: command not found
if: line 3: C]: command not found
N if [ $opt == "a" -o $opt == "b" -o $opt == "c" ];
要不用case 一个笨方法
#!/bin/bash
str=$1
array=("a" "b" "c")
let found=0
for i in "${array[@]}"
do
echo $i
if [ "$1" == $i ] ; then
let found=1
fi
done
if [ $found -eq 1 ] ; then
echo "Y"
else
echo "N"
fi
run:
apt-get install ruby1.9
#!/usr/bin/env ruby
var1 = "A"var2 = "D"
if 'ABC'.split(//).include?"#{var1}" and 'DEF'.split(//).include?"#{var2}" puts "yes"else put "no"end
页:
[1]