gpt4 book ai didi

linux - sed 无法使用 bash 脚本注释文件中的一行

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:23 26 4
gpt4 key购买 nike

我创建了一个 bash 脚本,用于修改 RHEL 服务器中打开文件的 ulimit。

所以我已经阅读了文件/etc/security/limits.conf 中的行,如果“*”域的打开文件的软/硬限制小于 10000,我正在评论该行并添加一个新行软/硬限制为 10000。

脚本按设计运行,但用于注释脚本中一行的 sed 命令不起作用。

请在下面找到完整的脚本:-

#!/bin/sh
#This script would be called by '' to set ulimit values for open files in unix servers.
#
configfile=/etc/security/limits.conf
help(){
echo "usage: $0 <LimitValue>"
echo -e "where\t--LimitValue= No of files you want all the users to open"
exit 1
}
modifyulimit()
{
grep '*\s*hard\s*nofile\s*' $configfile | while read -r line ; do
firstChar="$(echo $line | xargs | cut -c1-1)"
if [ "$firstChar" != "#" ];then
hardValue="$(echo $line | rev | cut -d ' ' -f1 | rev)"
if [[ "$hardValue" -ge "$1" ]]; then
echo ""
else
sed -i -e 's/$line/#$line/g' $configfile
echo "* hard nofile $1" >> $configfile
fi
else
echo ""
fi
done

grep '*\s*soft\s*nofile\s*' $configfile | while read -r line ; do
firstChar="$(echo $line | xargs | cut -c1-1)"
if [ "$firstChar" != "#" ];then
hardValue="$(echo $line | rev | cut -d ' ' -f1 | rev)"
if [[ "$hardValue" -ge "$1" ]]; then
echo ""
else
sed -i -e 's/$line/#$line/g' $configfile
echo "* hard nofile $1" >> $configfile
fi
else
echo ""
fi
done
}
deleteEofTag(){
sed -i "/\b\(End of file\)\b/d" $configfile
}
addEofTag()
{
echo "#################End of file###################" >> $configfile
}
#-------------Execution of the script starts here ----------------------
if [ $# -ne 1 ];
then
help
else
modifyulimit $1
deleteEofTag
addEofTag
fi

命令 sed -i -e 's/$line/#$line/g' $configfile 从终端执行时工作绝对正常,它正在注释该行,但当我从终端执行时它不工作unix shell 脚本。

最佳答案

插值在单引号中不起作用使用双引号并尝试

sed -i -e 's/$line/#$line/g'

sed -i -e "s/$line/#$line/g"

关于linux - sed 无法使用 bash 脚本注释文件中的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41184702/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com