Tuesday, 15 July 2014

bash - sed vs array vs variable -



bash - sed vs array vs variable -

have bash script contains 2 arrays:

names=( [0]=port_shutdown [1]=port_http [2]=port_https [3]=keystore_file [4]=key_alias [5]=keystore_pass [6]=truststore_file [7]=truststore_pass ) value=( [0]="$port_shutdown" [1]="$port_http" [2]="$port_https" [3]="$keystore_file" [4]="$key_alias" [5]="$keystore_pass" [6]="$truststore_file" [7]="$truststore_pass" )

and variables:

port_shutdown="8008" port_http="8046" port_https="8446" keystore_file="tomcat.jks" key_alias="tomcat" keystore_pass="password" truststore_file="trustcacerts.jks" truststore_pass="password"

run in loop:

while [ "$i" -lt "11" ]; name="${names[${i}]}" value="${value[${i}]}" echo -e "changing name - "$name" value "$value";\n" sed 's|'"${name}"'|'"${value}"'|g' "server.xml.default" > "server.xml" (( i++ )) done

but doesn't alter names... although - see values in variables:

$ ./config.sh changing name - port_shutdown value "8008"; changing name - port_http value 8046; changing name - port_https value 8446; changing name - keystore_file value tomcat.jks; changing name - key_alias value tomcat; changing name - keystore_pass value password; changing name - truststore_file value trustcacerts.jks; changing name - truststore_pass value password;

if set illustration name="port_shutdown" , value="8008" - works good...

what i'm doing wrong here?

try maybe

sed "s|${name}|${value}|g" "server.xml.default" > "server.xml"

but missign delimiter (ex: port_http alter port_https if array name in order)

bash loops sed

No comments:

Post a Comment