我正在尝试编写一个 bash 脚本来快速更改 i3 的 $mod 键我将“set $mod Mod4”移动到我的 conf 末尾
#!/bin/bash
$1=key
$alt="alt"
$win="win"
sed '$d' /home/fabian/.config/i3/config
if [ "$key" = "$win" ]; then
echo "set \$mod Mod4" >> /home/fabian/.config/i3/config
echo
echo "Changed successfully to win"
else
if [ "$key" = "$alt" ]; then
echo "set \$mod Mod1" >> /home/fabian/.config/i3/config
echo
echo "Changed successfully to alt"
else
echo "No Flag valid flag set, set alt or win"
fi
fi
两个问题:即使我使用 sudo 运行,sed 命令也不起作用
如果我使用“changeMod.sh alt”运行脚本,它仍然会进入获胜条件并回显“成功更改为获胜”
如果可能的话,我希望脚本插入旧的 $mod+shift+r 以重新加载 i3 conf
你知道这怎么可能吗?
主要问题是您
sed
缺少-i
允许它就地编辑文件的标志,但是您的方法是不安全的 - 如果您多次运行脚本而没有有效命令,您每次都会从配置中删除一行。你也有很多重复的工作。这应该以一种更安全、更简洁的方式来解决问题。创建配置的备份副本,但您可以通过
.backup
从sed
行中删除来防止这种情况发生(取决于您的可用功能sed
)。