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