2013-10-29 2 views
0

동일한 스크립팅 파일에서보다 자세한 출력을 만드는 방법에 대해 궁금합니다. 이 통화 코드에 대한 일치하는 라인을 발견 한 후, 그것은 다음과 같은 출력되도록 나는 스크립트를 수정하고 싶습니다 :Unix 스크립트 내에서 루프 만들기

Currency code: {currency code value}  
Currency name: {currency name value} 
Units per USD: {units value} 
USD per unit : {USD value} 

내가 지금까지 가지고 :

#!/bin/bash 

# Set local variable $cc to first command line argument, if present 
cc=$1 
# execute the do loop while $curr is blank 
while [ -z "$curr" ] 
do 
# test if $cc is blank. If so, prompt for a value 
    if [ -z "$cc" ] 
    then 
     echo -n "Enter a currency code: " 
     read cc 
    fi 
    # Search for $cc as a code in the curr.tab file 
    curr=`grep "^$cc" curr.tab` 
    # clear cc in case grep found no match and the loop should be repeated 
    cc= 
done 
# echo the result 
echo $curr 

curr.tab의 I를 이 같은 보일 것이다 사용하고 있습니다 : 끝에서

USD US Dollar   1.0000000000 1.0000000000 
EUR Euro    0.7255238463 1.3783144484 
GBP British Pound  0.6182980743 1.6173428992 
INR Indian Rupee  61.5600229886 0.0162443084 
AUD Australian Dollar 1.0381120551 0.9632871472 
CAD Canadian Dollar 1.0378792155 0.9635032527 
AED Emirati Dirham  3.6730001428 0.2722570000 
MYR Malaysian Ringgit 3.1596464286 0.3164911083 
+0

쉘 프로그래밍에 대한 구체적이고 집중된 질문보다는 "제 일을 해주십시오"와 같은 냄새가납니다. 좀 더 엄격하고 구체적인 질문을 할 수 있습니까? –

+0

학교/대학에서 이런 숙제가 있었으면 좋겠다. – EverythingRightPlace

+0

Doubtful. 잠시 후 유닉스 스크립팅을 닦으려고했다. 기본 사항부터 다시 시작하는 것이 가장 좋습니다. 일부 예제 파일을 가져 왔습니다. 그러나 그것은 약간 골칫거리입니다. 동일한 스크립팅 파일 내에서 여러 루프를 만들려고합니다. –

답변

2

echo $curr가 할 대신 :

[[ $curr =~ ^(...)[[:space:]]+(.+)([[:space:]]+([[:digit:]\.]+)){2}$ ]] 
printf "Currency code: %s\nCurrency name: %s\nUnits per USD: %s\nUSD per unit : %s\n" "${BASH_REMATCH[@]:1}" 
+0

나를 도와 주셔서 감사합니다. –

관련 문제