【问题标题】:Bashscript as Systemd Service: If statement returns always false作为 Systemd 服务的 Bash 脚本:If 语句总是返回 false
【发布时间】:2019-01-27 15:27:03
【问题描述】:

我有一个小脚本,我把它变成了一个 systemd 服务。 如果我将脚本作为服务运行,则一个简单的 if 语句返回 alwaysws false ,如果我以用户身份调用脚本手册或超级使用,则该语句为 true:

#!/bin/bash
if [ "test" == "test"]
then
echo "if ist true" | logger 2>&1
else
echo "if ist false" | logger 2>&1
fi

实际上我试图找到子字符串,但为了简单起见,我现在正在运行这个语句,但同样的问题......

【问题讨论】:

  • 试试[ "test" == "test" ](注意]前面的空格)。如果没有空格,[ 会抱怨语法错误并返回 false,这是应该的。
  • 好的,原来有空间...但问题仍然存在..

标签: shell scripting raspbian systemd


【解决方案1】:

好的,我使用 grep 解决了问题。它很奇怪,但是我尝试使用的所有语法 if 根本不起作用,如果我将脚本作为服务启动......但无论如何.. 使用 grep 一切都很容易:

file=myentirestring

if echo "$file" | grep -q "entire"; then
    echo "true" 
else
    echo "false"
fi

【讨论】:

    猜你喜欢
    • 2019-05-11
    • 2020-08-09
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    相关资源
    最近更新 更多