sách gpt4 ai đã đi

linux - 变量的 IF 运算

In lại 作者:塔克拉玛干 更新时间:2023-11-02 23:51:28 27 4
mua khóa gpt4 Nike

我正在用 bash 构建一个用于 Linux (SLES 11SP3) 的脚本。我想通过使用以下语法查找它的 pid 来检查某个进程是否存在:

pid="$(ps -ef | grep -v grep | grep /sbin/syslog-ng | awk '{print $2}')"

这会用 syslog-ng 进程的 pid 填充变量 pid。然后我想在 if 语句中使用这个变量:

if [ ${pid} > 0 ]; then
làm gì đó
khác
do something else

问题是这个 if 语句似乎总是假的,即使变量 pid 的值大于 0。所以,else 部分总是被执行而不是正确的(如果条件为真)语句。

我在使用 wc -l 检查文件系统是否存在时遇到了类似的问题:

exist_tmp=$(df -x fuse.gvfs-fuse-daemon -h | grep /tmp | wc -l)
if [ ${exist_tmp} > 0 ]; then
làm gì đó

这是行不通的,即使变量的值为 1,表示存在/tmp 文件系统。当我将语法更改为:

if [ ${exist_tmp} != 0 ]; then
làm gì đó

在这个用例中,大于 0 和不等于 0 之间的区别让我有些困惑。

问题是:

  1. 有人知道为什么 pid 查找和 if 语句不会执行我想要它执行的操作吗?
  2. 有没有人知道 > 0 和 != 0 可能有什么问题?

非常感谢任何输入!

1 Câu trả lời

在 bash 中,<、>、!= 之类的比较用于按字典顺序比较字符串。要比较它们的整数值,您可以 > 像这样:

if [ "$a" -gt "$b" ]

和这样的不平等:

if [ "$a" -ne "$b" ]

Xem thêm this reference有关更多详细信息或其他比较器。

关于linux - 变量的 IF 运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30544292/

27 4 0
Bài viết được đề xuất: bash脚本中的Mysql密码警告
Bài viết được đề xuất: 安卓 list .xml
Bài viết được đề xuất: android - 如何使用 twitter 集成 android 应用程序在 twitter 墙上发布消息
Bài viết được đề xuất: linux - 有条件地将行附加为列 bash 脚本
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com