tagger tag picard para musicbrainz mac kid3 for easytag linux bash amazon-ec2 vpn openvpn

linux - tag - musicbrainz picard debian



BASH: ¿cómo puedo obtener el valor variable dentro de las etiquetas EOF? (1)

Retire la barra invertida antes de EOF :

#!/bin/bash i=ok # This prints "Bwah ok" cat <<EOF Bwah $i EOF # This prints "Bwah $i" cat <</EOF Bwah $i EOF

Para obtener su última visualización de línea rightsubnet="10.109.0.20/32" (para i = 1), necesita algo como esto:

i=1 val1=beep val2=bop rightval="val$i" cat <<EOF This is a beep: ${!rightval} EOF

Es decir, usted calcula el nombre de la variable que desea, lo pone en otra variable y usa la sintaxis ${!var} .

Pero para ese tipo de cosas, deberías usar una matriz:

i=0 vals=(beep bop) cat <<EOF This is a beep: ${vals[$i]} EOF

Tenga en cuenta sin embargo que los índices comienzan en 0.

Tengo este siguiente script, pero necesito obtener el valor de la variable $ i trabajando dentro de cada bloque que comienza con EOF y termina con EOF.

No está leyendo el valor variable, pero poniendo $ i

/var/tmp/vpn.sh tengo:

#!/bin/bash amazonEth0="10.0.0.18" amazonWan0="4.9.2.9" vpnServer="4.8.8.6" hosttoHost1="10.109.0.20/32" hosttoHost2="10.109.0.21/32" hosttoHost3="10.109.58.6/32" hosttoHost4="10.109.59.3/32" for i in 1 2 3 4 do cat > /tmp/test$i.conf << /EOF #Step 3 conn test"$i" #auto=start type=tunnel authby=secret pfs=no aggrmode=no ikelifetime=28800s lifetime=3600s ike=aes128-md5;modp1024! phase2alg=aes128-md5;modp1024 forceencaps=yes left=$amazonLan0 leftid=$amazonWan0 leftsourceip=$amazonWan0 right=$vpnServer rightsubnet=$hosttoHost$i EOF done ### Run me cat > /var/tmp/vpn.sh << /EOF service ipsec restart ######## Apply for loop here, instead of many many lines ########### # for i in 1 2 3 4 # do # ipsec auto --add test$i # done ipsec auto --add test1 ipsec auto --add test2 ipsec auto --add test3 ipsec auto --add test4 ######## Apply for loop here, instead of many many lines ########### # for i in 1 2 3 4 # do # ipsec auto --up test$i # done ipsec auto --up test1 ipsec auto --up test2 ipsec auto --up test3 ipsec auto --up test4 ipsec auto --status ip xfrm policy ip route show ######## Apply for loop here, instead of many many lines ########### # for i in 1 2 3 4 # do # ping -c 1 $hosttoHost$i # done ping -c 1 10.109.0.20; ping -c 1 10.109.0.21; ping -c 1 10.109.58.6; ping -c 1 10.109.59.3; EOF chmod +x /var/tmp/vpn.sh # Cake - eat now - optional /var/tmp/vpn.sh > save output | mail -s ipsec date time &