如何在bash中测试某些字符串是否为点?我试过这个:
if [ "$var" = "." ]
和此:
if [ "$var" = "\." ]
但它不起作用。
答案 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)
尝试加倍等于(==
),比较与分配不同。