csh과 bash의 차이를 소개하고자 한다.

설명 많이 하는 것보다 소스로 보여준다.

 

 

*csh의 특징

 

set을 쓴다.

expression에서 = 앞뒤로 space를 쓸 수 있다.

배열은 1부터 시작한다.

while 문장은 while() .. end 라는 문법을 가지고 있다.

iteration이 쉽다.

 

 #!/bin/csh
set projects = (`ls --color=none | grep -E 'google_' | paste -s -d' '`)
echo "Target Project : ${projects}"

@ m = 1
while ( $m <= $#projects )
        echo "$projects[$m] ..............."
        set properties = `grep -h 'real.ConnectionURL' $projects[$m]/src/conf/*.properties | sed 's/real.ConnectionURL=jdbc://g' | paste -s -d' ' | tr '?' '-'`
        echo $properties
             ./execute-pmcdb.sh "update pmc_project set dbinfo = '$properties' where id = '$projects[$m]'"
       @ m = $m + 1
end

 

 

* bash

 

expression은 space를 포함지 않는다.

set 안쓴다.

배열의 값은 0부터 시작한다.

배열을 프린트하는 법이 다르다.

배열을 표기하는 법이 다르다.

while [ expression ] do ... done 문법을 사용한다.

expression은 숫자와 문자가 다르게 사용된다.

 
#!/bin/bash
lucydir="project-lucy"
projects=(`ls --color=none $lucydir | grep -E 'google_' | paste -s -d' '`)

echo "Target Project : ${projects[@]}"
m=0
while [ $m -lt ${#projects[@]} ]
do

    echo "${projects[$m]} ..............."
    set properties = `grep -h 'real.ConnectionURL' $lucydir/${projects[$m]}/src/conf/*.properties | sed 's/real.ConnectionURL=jdbc://g' | paste -s -d' ' | tr '?' '-'`
    echo $properties
    ./execute-pmcdb.sh "update pmc_project set dbinfo = '$properties' where id = '${projects[$m]}'"
    m=`expr $m + 1`
done

echo "Target Project : ${projects[@]}"

 

 

참 봐두라..

 

*bash의 if문

 if [ ${IP} == '' ]; then

 fi

 

* bash의 if문 2 (logical OR을 사용시)

 echo ${HOSTS[$m]}" lookup "
if [ ${HOSTS[$m]} == '-' ] || [ ${HOSTS[$m]} == '']  then
    m=`expr $m + 1`
    continue
fi

 

Posted by '김용환'
,