我想在一行if/else条件下使用以下等式.

$maxline=`cat journald.conf | grep "#SystemMaxUse="`
if [ $maxline == "#SystemMaxUse=" ]
then
    sed 's/\#SystemMaxUse=/SystemMaxUse=50M/g' journald.conf > journald.conf2
    mv journald.conf2 journald.conf;
else
    echo "This file has been edited. You'll need to do it manually."
fi  

我正试图把它放到一行命令中.到目前为止,除了命令的其他部分,我已经全部掌握了.这是我到目前为止所拥有的...

maxline=`cat journald.conf | grep "#SystemMaxUse="` && if [ $maxline == "#SystemMaxUse=" ]; then sed 's/\#SystemMaxUse=/SystemMaxUse=50M/g' journald.conf > journald.conf2 && mv journald.conf2 journald.conf; fi

那么,如何将上述代码的else部分包含到命令中呢?提前感谢您的帮助.

推荐答案

看起来你走对了方向.只需在";"后面添加else语句即可在"then"语句之后.此外,我会用分号将第一行和第二行分开,而不是用"&;"连接.

maxline='cat journald.conf | grep "#SystemMaxUse="'; if [ $maxline == "#SystemMaxUse=" ]; then sed 's/\#SystemMaxUse=/SystemMaxUse=50M/g' journald.conf > journald.conf2 && mv journald.conf2 journald.conf; else echo "This file has been edited. You'll need to do it manually."; fi

同样在原始脚本中,在声明maxline时,使用了反勾"`"而不是单引号"`",这可能会导致问题.

Linux相关问答推荐

awk:try 将时间戳字符串转换为unix纪元时间

如何调试tokio任务挂起的位置?

奇怪的 Bash 脚本行为

如何正确Forking 并完成进程以避免 EAGAIN 错误

Linux 上 Ada 任务优先级的语义是什么?

使用sed命令将记录中的字符串替换为DD-MMM-YYYY日期格式

将行转换为一条

使用 awk 将多行文本转换为 CSV

获取S3路径的linux命令

查找更高版本的文件

在 puppet 中管理 linux 的用户密码

如何使用 GDB 和 QEMU 调试 Linux 内核?

仅当当前行中存在字符串时才替换

在 Node.JS 中引用相对于应用程序根目录的文件的正确方法

适用于 Linux 和 Mac 的 HTTP 调试代理

为 django 项目安装 memcached

如何以另一个用户的身份使用 sudo 在 bash 子shell 中执行一系列命令?

如何将 bash 别名定义为多个命令的序列?

使用 Bash 脚本查找文件中字符串的行号

linux脚本杀死java进程