bash - using -sort in linux -
i want sort input of user sort
in case (and function). never used before. have use array or something?
for example user does:
bash test.sh 50 20 35 50
normally in script happen:
ping c -1 "192.168.0.$i"
that results in
192.168.0.50 192.168.0.20 192.168.0.35 192.168.0.50
now want last numbers sorted , pinged smallest biggest number this: 20 35 50 , if have 2 times same number, script pings number 1 time.
sortnumbers(){ } ... case -sort ) sortnumbers;; esac
you can use this:
#!/bin/bash array=($(printf '%s\n' "$@"|sort -nu)) echo ${array[@]}
if run test.sh 34 1 45 1 5 6 6 6
, give output:
1 5 6 34 45
now can use variable $array
for
loop like:
for in ${array[@]};do #do $i done
explanation:
the arguments of script piped command sort
, output assigned array named array
. options -n
numerical sort , -u
unique.
assumed complete code (for clarification):
#!/bin/bash array=($(printf '%s\n' "$@"|sort -nu)) in ${array[@]};do ping -c -1 "192.168.0.$i" done
using function:
sortnumbers(){ array=($(printf '%s\n' "$@"|sort -nu)) } sortnumbers 43 1 2 8 2 4 98 45 echo ${array[@]} ##this sample use, can put loop here
so can declare array array=($@)
@ begining of script. call sortnumbers
function arguments (remember exclude -sort
argument) when needed sort them (it change variable $array
sorted content). put loop outside function takes whatever in variable $array
(sorted or unsorted), way have way (choice sort or not).
Comments
Post a Comment