Example of the hadoop configuration file automatically configured by shell [plain] #! /Bin/bash read-p 'Please input the directory of hadoop, ex:/usr/hadoop: 'hadoop_dir if [-d $ hadoop_dir]; then echo 'yes, this directory exist. 'else echo 'error, this directory not exist. 'Exit 1 fi if [-f $ hadoop_dir/conf/core-site.xml]; then echo "Now config the $ hadoop_dir/conf/core-site.xml file. "read-p 'Please input the ip value of fs. default. name, I. e. hdfs: // ip: port: 'IP I = 1 wh Ile [-z $ ip] do read-p 'Please input the ip value of fs. default. name, I. e. hdfs: // ip: port: 'IP let I ++ echo $ I if [$ I-gt 2]; then echo 'You have input three time, done, exit. 'Exit 1 fi done if [$ ip = '']; then echo 'the value of ip can not null, exit. 'Exit 1 fi read-p "Please input the port value of fs. default. name, I. e. hafs: // $ ip: port: "port if [$ port ='']; then echo 'the value Of port can not null, exit. 'Exit 1 fi read-p' Please input the dir value of hadoop. tmp. dir: 'hadoop_tmp_dir if [$ hadoop_tmp_dir = '']; then echo 'the value of hadoop. tmp. dir can not null, exit. 'Exit 1 else if [! -D $ hadoop_tmp_dir]; then echo 'the directory you have input is not exist, we will make it. 'mkdir-p $ hadoop_tmp_dir fi tmp_dir =$ (echo $ hadoop_tmp_dir | sed's: // :\\/: G ') sed-I "s/ip/$ ip/g" $ hadoop_dir/conf/core-site.xml sed-I "s/port/$ port/g" $ hadoop_dir/conf/core-site.xml sed- I "s/tmp_dir/$ tmp_dir/g" $ hadoop_dir/conf/core-site.xml else echo "The file $ hadoop_dir/core-site.xml doen't exist." Exit 1 fi cat $ hadoop_dir/conf/core-site.xml echo 'config the core-site.xml success! 'Echo key analysis: 1. tmp_dir = $ (echo $ hadoop_tmp_dir | sed's:/: \/: G') The $ hadoop_tmp_dir we input is similar to/usr/hadoop/tmp, an error occurs if you write it directly in sed: sed-I "s/tmp_dir/$ hadoop_tmp_dir/g" $ hadoop_dir/conf/core-site.xml. Because it will be parsed into: sed-I "s/tmp_dir/usr/hadoop/tmp/g" $ hadoop_dir/conf/core-site.xml, apparently not satisfied, the solution is to convert the/usr/hadoop/tmp input to \/usr \/hadoop \/tmp, that is, add escape characters. Sed's:/: \/: G'. Then, use $ () to assign the value to the variable. 2. sed-I "s/ip/$ ip/g" $ hadoop_dir/conf/core-site.xml here is the so-called replacement of strings in the file, the example file is: [plain] root @ ubuntu:/home/houqd/hadoop/conf # cat-n core-site.xml 1 <? Xml version = "1.0"?> 2 <? Xml-stylesheet type = "text/xsl" href = "configuration. xsl"?> 3 4 <! -- Put site-specific property overrides in this file. --> 5 6 <configuration> 7 <property> 8 <name> fs. default. name </name> 9 <value> hdfs: // ip: port </value> 10 </property> 11 <property> 12 <name> hadoop. tmp. dir </name> 13 <value> tmp_dir </value> 14 </property> 15 </configuration> 3. note other Syntax: if []; then else fi while [] do .. done I = 0 let I ++