Blake Smreker
Blake Smreker

Reputation: 117

How can I “fill in the blanks” for a command in a script from user input?

I’m trying to build a script that asks for a time clock number and a DC number from the user running the script, which I’m intending to fill in the Xs for

/u/applic/tna/shell/tc_software_update.sh tmcxx.s0xxxx.us REFURBISHED

However, I am stumped as to how to have the user’s input fill in those Xs on that command within the script. This script is in its earliest stages so it’s very rough right now lol. Thank you for responding. Here’s the scripts skeleton I’m working on:

#!/bin/bash

#This server is intended to speed up the process to setup timeclocks from DC tickets

#Defines time clock numbers

timeclocks="01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35"

#Defines DC number

echo “What is the DC number?”

read dc

#Defines TMC number

echo "What is the Time Clock number?"

read number

if $number == $timeclocks && $dc == ???; then
/u/applic/tna/shell/tc_software_update.sh tmcxx.s0xxxx.us REFURBISHED

Upvotes: 0

Views: 394

Answers (2)

CJK
CJK

Reputation: 6092

Modelling this on your script:

timeclocks=( {1..35} )
printf '%s' "DC number: "; read dc
printf '%s' "Time Clock number: "; read tmc
tmc=$( printf '%02d' "$tmc" )
dc=$( printf '%04d' "$dc" )
tmc_valid=$( for t in ${timeclocks[@]}; do \
    [[ $tmc -eq $t ]] && echo true && break; \
    done )
[[ "$tmc_valid" = "true" && "$dc" = "???" ]] && \
/u/applic/tna/shell/tc_software_update.sh tmc${tmc}.s0${dc}.us REFURBISHED

Upvotes: 0

Sianur
Sianur

Reputation: 649

Do you mean invoking $ /u/applic/tna/shell/tc_software_update.sh tmc${number}.s0${dc}.us REFURBISHED?

Consider the following snippet:

[test.sh]
read x
read y
echo "x=${x}, y=${y}"

$ sh test.sh 
5
4
x=5, y=4

Further on, you can use command line arguments ($1, $2 etc.) instead of the user input.

Upvotes: 1

Related Questions