【发布时间】:2020-06-17 14:19:12
【问题描述】:
我对 shell 脚本很陌生,在尝试检查字符串中的子字符串时遇到了问题。
我想构建代码来检查您是否正在运行基于 64 位的系统。这由第一行中x86_64 的uname -m && cat /etc/*release 命令的输出指示。
这是我的代码:
INFO=$(uname -m && cat /etc/*release)
if [ "$INFO" == *"x86_64"* ]
then
echo "You are running a 64bit-based system!"
else
echo "Your system architecture is wrong!"
exit
fi
虽然我运行基于 64 位的系统并且 x86_64 显示在我的命令输出中,但 if 语句仍然返回 false,所以我得到了输出 Your system architecture is wrong!。应该是相反的。
有人可以通过确定我做错了什么来帮助我吗?我也接受改进我的方法的一般建议,但首先,我想知道错误在哪里。
非常感谢您的帮助!
【问题讨论】:
-
请注意 Arch Linux 的
/etc/arch_release不包含字符串x86或x86_64。 (它有一些像PRETTY_NAME="Arch Linux"和BUILD_ID=rolling这样的行)。也许file /bin/ls作为一种检查用户空间位数的方式更便携。 (与uname -a的内核位数相反,它可能是运行 32 位用户空间的 64 位内核。) -
您是使用
/bin/sh还是使用/bin/bash或其他方式运行此脚本? -
@glennjackman 我正在使用 /bin/bash
标签: linux bash shell 64-bit x86-64