Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

331
Visualizações
Cómo encontrar el mínimo de dos variables en Linux

tengo dos variables $a y $b

¿Hay un comando de script de Shell para asignar el valor de la variable mínima a $c?

es decir

 $c = min($a,$b)

y algún comando que puede funcionar en todas las plataformas hp-ux,aix,linux_x_64

gracias de antemano

EDITAR: el shell predeterminado es ksh

y debajo del script que estoy tratando de ejecutar

 rm abc.log near_dr=`sqlplus -s tcs384160/tcs#1234 <<\EOF set pagesize 0 feedback off verify off heading off echo off select max(sequence#) from v$archived_log where applied='YES' and thread#=1 and dest_id=2; exit; EOF` DR=`sqlplus -s tcs384160/tcs#1234 <<\EOF set pagesize 0 feedback off verify off heading off echo off select max(sequence#) from v$archived_log where applied='YES' and thread#=1 and dest_id=3; exit; EOF` safe_var=$([ $near_dr -le $DR ] && echo "$near_dr" || echo "$DR") echo $safe_var; ulimit=`expr $safe_var - 30`; llimit=`expr $ulimit - 1000`; echo $llimit; echo $ulimit; i=$llimit while [ $i -le $ulimit ]; do ls evdprd_1_${i}_*.arc>>abc.log; let i=i+1; done; recover -s ttlhydnwr -c tphtpsd2<<EOF >> abc.log ls -1 *.arc exit EOF sed -e 's/[\t ]//g;/^$/d' abc.log > abc1.log awk '++seen[$0] == 2' abc1.log > actual.log

ignore las partes de sqlplus ya que funcionan bien, el único problema es que $safe_var necesita el mínimo de los dos valores

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

No hay ninguna función, pero puedes crearla:

 (( $a <= $b )) && echo "$a" || echo "$b"

La condition && action1 || action2 evalúa la condición. Si es cierto, realice action1 ; de lo contrario, realice action2 .

Para almacenar el resultado en una variable, haz lo siguiente:

 min=$( (( $a <= $b )) && echo "$a" || echo "$b" )

Actualizar

Parece que la sintaxis $( (( )) ) está dando problemas. Por lo tanto, vamos a reemplazarlo por:

 [ $a -le $b ] && echo "$a" || echo "$b"

o asignando valor:

 min=$([ $a -le $b ] && echo "$a" || echo "$b")

Muestra

 $ a=3 $ b=4 $ [ $a -le $b ] && echo "$a" || echo "$b" 3 $ b=1 $ [ $a -le $b ] && echo "$a" || echo "$b" 1 $ b=3 $ [ $a -le $b ] && echo "$a" || echo "$b" 3
over 4 years ago · Santiago Trujillo Relatório

0

También podrías hacerlo de esta manera:

 x=1 y=2 echo $(($x<$y?$x:$y)) 1

Para almacenar valor en otra variable:

 z=$(($x<$y?$x:$y)) #Min z=$(($x<=$y?$x:$y)) #Min and equal z=$(($x>$y?$x:$y)) #Greater z=$(($x>=$y?$x:$y)) #Greater and equal
over 4 years ago · Santiago Trujillo Relatório

0

En ksh, esto funciona bien

 $ near_dr=5 DR=10 $ save_var=$(( near_dr < DR ? near_dr : DR )) ; echo $save_var 5 $ near_dr=15 DR=10 $ save_var=$(( near_dr < DR ? near_dr : DR )) ; echo $save_var 10 $ near_dr=15 DR=15 $ save_var=$(( near_dr < DR ? near_dr : DR )) ; echo $save_var 15

Entonces puedes escribir una función:

 min() { echo $(( $1 < $2 ? $1 : $2 )) } safe_var=$(min $near_dr $DR)

Esto es lo mismo que la respuesta de @Liaraz, excepto que "Se puede hacer referencia a las variables por nombre dentro de una expresión aritmética sin usar la sintaxis de expansión de parámetros". (página man de ksh, sección Evaluación aritmética)

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda