在bash中测试一个点

时间:2010-04-30 14:16:26

标签: bash if-statement

如何在bash中测试某些字符串是否为点?我试过这个:

if [ "$var" = "." ]

和此:

if [ "$var" = "\." ]

但它不起作用。

3 个答案:

答案 0 :(得分:4)

适合我:

$ d=.
$ if [ $d = '.' ];then echo 'yes'; else echo 'no'; fi
yes
$ d=foo
$ if [ $d = '.' ];then echo 'yes'; else echo 'no'; fi
no

答案 1 :(得分:1)

我的代码:

#!/bin/bash

var="."

[ $var = "." ] && echo "Yup, it equals '.'"

exit 0

打印哪些:

Yup, it equals '.'

调试的:

tpost@tpost-desktop:~$ /bin/bash -x ./foo.sh
+ var=.
+ '[' . = . ']'
+ echo 'Yup, it equals '\''.'\'''
Yup, it equals '.'
+ exit 0

$var中可能有一些空格(或者$var可能为空?),通过/bin/sh -x ./yourscript.sh运行它以查看它实际比较的内容。

请注意, == bashism ,它仅适用于Bash。对于习惯于单个 = 的人来说,它是一种生物的舒适感,导致赋值。如果你只使用bash,这很好,但是你永远不知道是什么/某些系统上的bin / sh可能指向。最好只使用 = 并完全避免这个问题。

答案 2 :(得分:0)

尝试加倍等于(==),比较与分配不同。