machineB 및 machineC의 현재 디렉토리에서 최신 폴더를 가져 오는 셸 스크립트가 있습니다. 그래서 나는 최신 폴더를 찾을 수있는 아래 명령을 내놓았습니다.
/bat/data/snapshot
그리고 해당 최신 폴더는 YYYYMMDD 형식입니다. 아래는 내 쉘 스크립트입니다.
#!/bin/bash
readonly FILERS_LOCATION=(machineB machineC)
readonly MAPPED_LOCATION=/bat/data/snapshot
dir1=$(ssh -o "StrictHostKeyChecking no" david@${FILERS_LOCATION[0]} ls -dt1 "$MAPPED_LOCATION"/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] | head -n1)
dir2=$(ssh -o "StrictHostKeyChecking no" david@${FILERS_LOCATION[1]} ls -dt1 "$MAPPED_LOCATION"/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] | head -n1)
echo $dir1
echo $dir2
length1=$(ssh -o "StrictHostKeyChecking no" david@${FILERS_LOCATION[0]} "ls '$dir1' | wc -l")
length2=$(ssh -o "StrictHostKeyChecking no" david@${FILERS_LOCATION[1]} "ls '$dir2' | wc -l")
echo $length1
echo $length2
if [ $dir1 eq $dir2 ] && [length1 > 0] && [length2 > 0]
then
echo "Hello World"
이제 조건부 if 문을 작성해야합니다. 나는 여부를 확인할 필요가 dir1
동일 dir2
하고 length1
보다 큰 0
및 length2
도보다 큰 경우 0
만 아웃을 인쇄Hello World
그러나 어떻게 든 위의 if 문이 작동하지 않습니다. 내가 여기서 뭘 잘못하고 있는지 아십니까? 나는 bash 스크립팅에서 약간 녹슬 었어 ..
그것은해야한다
if [ "$dir1" = "$dir2" ] && [ "$length1" -gt 0 ] && [ "$length2" -gt 0 ]
변수 이름 앞에는 $
s 가 와야합니다 . 문자열 같음 비교는를 사용하여 수행해야하며 =
숫자 비교는와 같은 명명 된 산술 연산자를 사용하여 수행해야합니다 -gt
. 을 참조하십시오 help test
.
(원칙적으로) -o
및 -a
테스트 연산자 [
는 관련되어 있고 피연산자가 연산자처럼 보일 때 인수를 안정적으로 구문 분석 할 수 없으므로 피해야 합니다. 를 사용 &&
하고 ||
쉘 대신 연산자.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다