Shell脚本以检测系统是32位还是64位。

15 浏览
0 Comments

Shell脚本以检测系统是32位还是64位。

有人知道如何创建一个shell脚本sh文件,如果是64位系统,就执行一个程序,如果是32位系统,则执行另一个程序吗?

非常感谢。

0
0 Comments

(Shell script to detect if system is a 32-bit or 64-bit)这个问题出现的原因以及解决方法:

某些情况下使用cpp命令来判断系统是32位还是64位,但是这种方法可能不适用于所有环境,只能在gcc环境下使用。这种方法的好处是可以检测任何64位架构,而不仅仅是x64架构(比如POWER,SPARC,IA64等)。

提问者还考虑过检查sizeof(void *)的值,但是这种方法需要编译器的支持,并且可靠性不如运行file命令检查系统二进制文件的方式。

解决方法如下:

if echo __SIZEOF_POINTER__ | cpp -E - - | grep '^8$' >/dev/null; then
    do_stuff
fi

0
0 Comments

Shell脚本用于检测系统是否为32位或64位的问题。问题出现的原因是有用户想要编写一个脚本来判断系统的位数,从而调用相应的程序。下面是解决这个问题的方法:

解决方法是使用uname -m命令,根据输出的结果判断系统的位数。如果输出为x86_64,则表示为64位系统;如果输出为i686,则表示为32位系统。根据这个判断结果,可以调用相应的程序。

然而,这种方法只在x86架构的系统上有效。

有用户在32位机器上成功使用了这种方法。

另外,可能会运行一个"generic" x86内核,而不是i686内核。因此,还需要测试不同的字符串来判断系统的位数。

感谢大家的帮助,特别感谢twid的指导,我成功解决了这个问题。

0
0 Comments

问题出现的原因是,执行脚本时无法正确判断系统是32位还是64位,只会得到一个命令行提示符“$”。

解决方法是,使用简单的字符串比较来判断系统位数。使用if语句和方括号,判断命令“$(uname -m | grep '64')”返回的结果是否为空。如果不为空,则系统是64位;如果为空,则系统是32位。

以下是完整的解决方法代码:

if [ "$(uname -m | grep '64')" != "" ]; then
  echo "ARCH: 64-bit"
else
  echo "ARCH: 32-bit"
fi

这段代码通过使用方括号和字符串比较,能够正确判断系统是32位还是64位,并输出相应的提示信息。

0