我写了一个小的bash脚本来检查机器的架构:
#!/bin/bash
v=$(uname -m)
echo $v
if [[ $v =~ ".*64.*" ]] ; then
echo "64 bits!"
else
echo "32 bits!"
fi
在我的机器上启动:
$ uname -m
x86_64
那么为什么我会得到这个结果呢?
$ ./test.sh
x86_64
32 bits!
答案 0 :(得分:3)
如果你拿出引号就行了。
if [[ $v =~ .*64.* ]] ; then
Bash在正则表达式的支持下很挑剔;引用之类的东西会产生重大且有时会产生意想不到It has also changed between Bash versions
如果您不需要完整的正则表达式支持,可写的便携式方法是
case $v in *64*) echo 64 bits ;; *) echo 32 bits;; esac
这可以一直移植回原来的v7 Bourne shell。