shell脚本配置文件|在编写shell脚本时用什么命令来修改配置文件求解越详细越好谢啦!

|

㈠ shell脚本修改配置文件中内容,实现自动每次加1。求指导,不胜感谢!

#!/bin/bashNUM=$(grep-oP'(?<=hello-)(d+)'$1)sed-i"s/$NUM/$((NUM+1))/"$1

㈡ 在编写shell脚本时,用什么命令来修改配置文件,求解。越详细越好,谢啦!

完全脚本修改不现实啊!一般的做法是提前定义好配置文件的内容,替换掉默认内的,容然后使用sed -i ‘s/1/2/g’修改里面的ip,打个比方说,nginx的配置文件,我所有的配置文件都一样,然后用sed改掉里面的域名和ip,和网页根目录。

㈢ shell脚本读取配置文件

text1.txt文件如下

㈣ 启动所有配置文件shell脚本怎么写

key=value 文本格式配置而对于 linux shell,基本上很难使用前面提到的各种格式。所以在 unix 系统上,很多 shell 脚本的配置文件都是纯粹的 key=value 文本格式,例如绝大多数的开机服务启动脚本、网络配置文件等。例子 1:ntp 配置文件$ cat /etc/sysconfig/ntpd# Drop root to id 'ntp:ntp' by default.OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid"# Set to 'yes' to sync hw clock after successful ntpdateSYNC_HWCLOCK=no# Additional options for ntpdateNTPDATE_OPTIONS=""例子 2:网络配置文件$ cat /etc/sysconfig/networkNETWORKING="yes"HOSTNAME="xx.com"而且,要注意得是,一般 key=value 的等号两边不应该有空格,因为大多数脚本都是直接 source 配置文件的(当然,也有部分脚本是会自己处理配置文件格式),使用起来很简单,基本上没有解析的操作:$ cat /etc/init.d/networkif [ ! -f /etc/sysconfig/network ]; then exit 0fi. /etc/sysconfig/network理所当然,这种格式无法满足更复杂的配置文件需求,比如 ini 格式的 section。那么,在 shell 中除了满世界去找一个解析库之外,能有什么方法可以实现呢?扩展 key=value 文本格式配置假设,我们管理着 n 个集群,每个集群配置项都是一样的,我们需要在 shell 脚本中,可以根据集群的名称来导入对应的配置。下面我们介绍一种最简单的方法,只需要针对第一种格式扩展下即可。我们创建一个配置文件目录 conf.d,在这个目录下存放各个集群的配置文件。每个集群对应一个配置文件,文件名为集群名称,例如:$ cat conf.d/CLUSTER_Ac_cluster_name="CLUSTER_A"c_cluster_type=1在脚本中,我们可以这样来导入相应集群的配置:function load_config(){ local cluster_name="$1" if [ -f "conf.d/$cluster_name" ]; then . conf.d/$cluster_name fi}load_config CLUSTER_A因为各个集群的配置文件相互独立,所以如果包含一些全局范围的配置项,需要在每个配置文件中都增加。或者,再增加一个入口的配置文件:# cat global.confg_conf_dir=conf.d # 配置文件目录g_version="0.1" # 全局配置脚本相应调整下:GLOBAL_CONF=/etc/xxx/global.confif [ -f "$GLOBAL_CONF" ]; then . $GLOBAL_CONFfiif [[ "$g_conf_dir" != /* ]]; then # 如果是相对路径 g_conf_dir="$(dirname $GLOBAL_CONF)/$g_conf_dir"fifunction load_config(){ local cluster_name="$1" if [ -f "$g_conf_dir/$cluster_name" ]; then . $g_conf_dir/$cluster_name fi}load_config CLUSTER_A类 ini 配置格式第二种方法,基本上已经可以解决我们之前假设中提出的需求,简单而且实现方便,不足的是配置文件比较零散,管理上可能不是很方便。如果,你仍然倾向于一种类似 ini 格式的配置,可以试试下面这种方法。在这种场景下,每个集群应该是一个独立的 section,所以转换成 ini 格式,配置文件应该是这样的:[DEFAULT]g_version="0.1" ; 全局配置[CLUSTER_A]c_cluster_name="CLUSTER_A"c_cluster_type=1但是,我们前面提到过,原生的 shell 是很难去解析 ini 格式的配置文件的,所以上面的形式还得变化下,我们用 shell 中的函数来模拟 section:$ cat cluster.conf# global configg_version="0.1" # 全局配置function section_cluster_a(){ c_cluster_name="CLUSTER_A" c_cluster_type=1}function section_cluster_b(){ c_cluster_name="CLUSTER_B" c_cluster_type=1}配套的配置文件解析库:$ cat config.sh#!/bin/echo Warnning, this library must only be sourced!if [ ! -f "cluster.conf" ]; then exit 0 # or print error before exitfi. cluster.conffunction load_config(){ local cluster_name=$(echo "$1" | tr A-Z.- a-z__) # 特殊符号转换 section_$cluster_name &>/dev/null # 执行函数,将集群的配置赋值给对应的全局变量}function option(){ local opt_name="$1" if [[ "$opt_name" != c_* ]]; then # no "c_" prefix opt_name="c_$opt_name" fi echo "${!opt_name}" # indirect reference by variable name}

㈤ shell脚本中,我要在配置文件写入东西,但是截取的内容可能没有,我想如果没有填入其他的东西

A=`awk ……`如果是空,就赋值你想填入的其他东西if [ -z $A ];thenA='123.123.123.123'fi

㈥ 标准的shell脚本应该包含什么

一个标准的shell脚本包括bin、conf、log三个文件夹。bin包含脚本的具体内容;conf包含脚本需要获取的配置;log包含脚本执行过程有无错误的log和跟业务相关的log。在计算机科学中,Shell俗称壳,是指“为使用者提供操作界面”的软件(命令解析器)。它用于接收用户命令,然后调用相应的应用程序。同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。在排序算法中,Shell是希尔排序的名称。

㈦ shell脚本执行中如何自动读取需要配置的文件

假如你的install.sh脚本中执行到某一句等待人工输入配置信息,这样的语句可能是read var意思是阻塞等待标准输入,将输入的内容赋值给var这个变量,接下来就根据var变量的内容进行后续安装操作; 那么只要将这行命令改成 var=`cat file` 也就是读取预先准备的文件内容即可,此时var不是手动输入的内容了。接下来的操作仍然是根据var变量的值安装


赞 (0)