在shell脚本中比较两个字符串变量
考虑有一个可变的行和可变的词:
line = 1234 abc xyz 5678
word = 1234
这些变量的值是从2个不同的文件中读取的。
如果它包含该单词,我想打印该行。 我如何使用shell脚本执行此操作? 我尝试了以前提出的所有建议解决方案。 例如,即使该单词不在该行中,也总是通过以下代码。
if [ "$line"==*"$word"*]; then
echo $line
fi
不需要if
语句; 只需使用grep
:
echo $line | grep "b$wordb"
你可以使用if [[ "$line" == *"$word"* ]]
您还需要使用以下内容来分配变量
line="1234 abc xyz 5678"
word="1234"
工作示例 - http://ideone.com/drLidd
观看白色空间!
当您将变量设置为某个值时,请勿在等号周围放置空格。 当你的值有空格时也使用引号:
line="1234 abc xyz 5678" # Must have quotation marks
word=1234 # Quotation marks are optional
当您使用比较时,您必须在括号和比较符号周围留出空白区域:
if [[ $line == *$word* ]]; then
echo $line
fi
请注意,双方括号。 如果您正在进行模式匹配,则必须使用双方括号而不是单个方括号。 双方括号表示您在使用==
或=
时执行模式匹配操作。 如果您使用单个方括号:
if [ "$line" = *"$word"* ]
你在做平等。 请注意,双方括号不需要引号,而在大多数情况下需要单括号。
链接地址: http://www.djcxy.com/p/36205.html