1行だけ出力されますが、

1行だけ出力されますが、

スクリプトを実行し、この出力が必要です。

SENTENCIA : select 1 from dual;
LA CONEXION ES : usu/clave@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host)(PORT=1525))(CONNECT_DATA=(SERVICE_NAME=bd)))

パスワード

declare -a arr=("usu<>clave<>host<>1525<>bd")
D="<>"  #Delimitador
# Indica el separador (en este caso ninguno) si no se pone la variable sentencia la parte en trozos
IFS=

export sentencia="select 1 from dual;"

for maquina in "${arr[@]}";  
do 

# Separa los campos en variables
sList=($(echo $maquina | sed -e 's/'"$D"'/\n/g' | while read line; do echo $line | sed 's/[\t ]/'"$D"'/g'; done))
for (( i = 0; i < ${#sList[@]}; i++ )); do
  sList[i]=$(echo ${sList[i]} | sed 's/'"$D"'/ /')
done

printf "SENTENCIA : %s \n" $sentencia;

# Sustituye los valores dentro de la cadena de conexión
cadena_conexion=`echo "${sList[0]}/${sList[1]}@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=${sList[2]})(PORT=${sList[3]}))(CONNECT_DATA=(SERVICE_NAME=${sList[4]})))"`
printf "LA CONEXION ES : %s \n" $cadena_conexion;

done

ただし、FS =を使用または使用しない場合は、次の結果が表示されます。

-- WITH FS=

$ sh ejecutar_sqlplus_remoto.sh
SENTENCIA : select 1 from dual;
LA CONEXION ES : usu
clave
host
1525
bd/@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=))(CONNECT_DATA=(SERVICE_NAME=)))

-- WITHOUT FS=

$ sh ejecutar_sqlplus_remoto.sh
SENTENCIA : select
SENTENCIA : 1
SENTENCIA : from
SENTENCIA : dual;
LA CONEXION ES : usu/clave@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host)(PORT=1525))(CONNECT_DATA=(SERVICE_NAME=bd)))

私の問題は、「FS =」を使用してから sentenciaの値を表示すると行1に表示されますが、cadena_conexionは行4に表示されます。 「FS=」行をコメントアウトすると、反対の結果が得られます。ここで、Sentenciaの値は4行、cadena_conexionの値は1行です。これら2つの変数を1行に表示したいと思います。行の変数を削除したくありません。今回はよく説明されたことを願っています。

ありがとう、

ベストアンサー1

努力する

 printf "SENTENCIA : %s \n" "$sentencia"

引用符を含めます。

引用符なしで使用

printf "SENTENCIA : %s \n" $sentencia;

;(省略しました)に置き換えられます。

printf "SENTENCIA : %s \n" select 1 from dual

印刷モード(%sなど)が1つしかないため、printfが複数回呼び出されます。

printf "SENTENCIA : %s \n" select 
printf "SENTENCIA : %s \n" 1 
printf "SENTENCIA : %s \n" from 
printf "SENTENCIA : %s \n" dual

おすすめ記事