我需要制作一个脚本,它查看
1)我想检查文件是否已经包含了添加的部分。使用grep,我尝试了这个:
/etc/gdm/Xsession
并在需要时添加-a ! -x "$HOME/.xsession"
。1)我想检查文件是否已经包含了添加的部分。使用grep,我尝试了这个:
if ! grep -q '-a ! -x "$HOME/.xsession"' "$xsessionScript"
该命令不能正常工作,因为grep试图解释单引号之间的所有内容。
2) 如果我发现文件未被修改,我想在if语句中追加-a ! -x "$HOME/.xsession"
: if [ "$1" != "default" -a "$1" != "custom" ]
,使其变成:
if [ "$1" != "default" -a "$1" != "custom" -a ! -x "$HOME/.xsession" ]
我尝试使用sed进行操作:
sed -i.bck '/\"$1" != "default" -a "\$1" != "custom"/a -a ! -x "$HOME/.xsession"'
但是这将会创建一个新行而不是将字符串添加在“custom”之后。
请帮帮我!
非常感谢 :)
顺便提一句,我使用的是CentOs 6.6.1,sed 4.2.1,bash 4.1.2
编辑:
我想要编辑的文件长这样:
[...]
case $# in
[...]
case "$1" in
[...]
*)
if [ "$1" != "default" -a "$1" != "custom" ]; then # I want this line to become:
====> # if [ "$1" != "default" -a "$1" != "custom" -a ! -x "$HOME/.xsession" ]
exec $CK_XINIT_SESSION $SSH_AGENT /bin/sh -c "exec -l $SHELL -c \"$1\""
fi
;;
esac
esac
fi
[...]
grep -Fq
是你要找的吗?如果你能提供两个输入样本和期望输出,那会更有帮助...一个需要添加,一个不需要修改。 - Sundeep