2016-12-30 1 views
-2

내가 사용자의 입력(리눅스)

예와 .txt 파일에서 값을 비교하려는 경우에 파일의 숫자 내용 비교 그 날 구글에 잘못된 질문을하는 경우

read -p 'Enter the ammount you want to withdraw:' amm 
if [ $amm > bank.txt ]; 
then 
    echo 'You dont have enough money in your account' 
else 
    $bank - $amm >> bank.txt 
fi 

내가 모르거나 해당 작업 그냥 아무 대답이 없다.

+0

'>'는 리디렉션이며 숫자 비교는 아닙니다. '[$ amm]'의 출력을'bank.txt' 파일 –

+0

에 리디렉션합니다. 즉,'[$ amm> bank.txt]'는 *'[$ amm]>과 똑같습니다. bank.txt' (덜 포팅 가능합니다. 명령에서 임의의 위치에 리디렉션을 넣을 수있는 것은 배쉬 니스입니다.) –

+0

http://wiki.bash-hackers.org/syntax/arith_expr –

답변

0

명령의 출력은 실제로 스크립트 자체에있는 것처럼 사용할 수 있습니다. 이 경우이 파일의 내용을 원하는, 그래서 당신은 사용할 수 있습니다

if [[ ${amm} -gt $(cat bank.txt) ]] 

또는 더 나은 아직, 여분의 cat 과정을 피하기 위해이 명령 cat bank.txt을 실행

if [[ ${amm} -gt $(<bank.txt) ]] 

을 캡처 그 결과를 실행중인 명령에 넣습니다. 해당 파일은 한 줄 42 포함 된 경우 명령 인 것처럼 그래서, 그것은 것 : 물론

if [[ ${amm} -gt 42 ]] 

가 해당 파일이 존재하지해야하거나 하나의 숫자가 아닌 다른 뭔가를 포함해야합니다, 그 방법은 '수상 잘 일해라. 사용하기 전에 내용을 확인해야합니다.

bash[[...]]이 아닌 ((...))으로 이것을 수행하는 방법을 제공합니다. 이는 표현하고자하는 것과 자연스럽게 맞을 수 있습니다.

if ((${amm} > $(<bank.txt))) 

실제로 실제로 [[...]] 변종을 선호합니다.

+0

너는 신이다 !!! 도와 줘서 고마워! 그것을해라! –

+0

probs가 없기 때문에, 아마도 그것은 끔찍하게 변형되었지만 제한된 지식으로는 내가 할 수있는 최선의 방법입니다 :-) – paxdiablo