korn 스크립트는 utils 파일의 함수로 전송된 인수에 대한 가비지를 인쇄합니다.

korn 스크립트는 utils 파일의 함수로 전송된 인수에 대한 가비지를 인쇄합니다.

올바른 매개변수를 수신하지 못하는 korn util 스크립트가 있습니다. 이유는 모르겠습니다. 저는 korn을 처음 사용하는데 이 문제를 온라인으로 검색해도 도움이 되지 않았습니다.

dir: ksh test_k.ksh를 호출하여 이 방법으로 호출 스크립트를 실행합니다.

test_k.ksh:

 #!/bin/ksh
    # Invoke the initialization script
    [[ ! -r /home/mcleary/k_test/bin/init.ksh ]] \
      && print -u2 "$0: /home/mcleary/k_test/bin/init.ksh not found" && exit
    . /home/mcleary/k_test/bin/init.ksh
   
   #I had to add -fDEV_OVR below for executing in dev env, but this is source of params and I see the resemblance to the garbage here
   m_F  -fDEV_OVR -t'echo "No skipping"' MMMM <<!
  cd ${REMOTE_DIR}
! #command called here, calls utils.michele.ksh

init.ksh looks like this (moved it to my dir to add #!/bin/ksh at the top):

초기화.ksh:

#!/bin/ksh
# Set up environment
umask 002

# Check $M_HOME
if [[ -z "$M_HOME" ]]; then
  print "\$M_HOME is not set"
  echo "setting M_HOME different way then echo"
  M_HOME="/appl/"
  echo $M_HOME
  echo "export and echo again next"
  export M_HOME="/appl/"
  echo $M_HOME
fi

echo "m_home:" $M_HOME

# Read $M_HOME/etc/m.env
if [[ -r ${M_HOME}/etc/m.env ]]; then
  . ${M_HOME}/etc/m.env
  echo "first case home etc m.env found"
...

# Read $M_HOME/bin/utils.ksh
if [[ -r /home/mcleary/k_test/bin/utils.michele.ksh ]]; then
  . /home/mcleary/k_test/bin/utils.michele.ksh
  echo "michele utils found"   #it prints this
else
  if [[ -f /home/mcleary/k_test/bin/utils.michele.ksh ]]; then
    print "\/home/mcleary/k_test/bin/utils.michele.ksh not readable, exiting"
    echo "michele utils not readable"
  else
    print "\/home/mcleary/k_test/bin/utils.michele.ksh not found, exiting"
    echo "michele utils not found"
  fi
  exit
fi

따라서 init 파일에서 일어나는 일은 M_HOME이 무엇인지 모르기 때문에 내가 제공하는 대로 기본값이 됩니다. 그런 다음 $M_HOME/etc/m.env를 찾았지만 아래와 같이 쓰레기를 인쇄합니다. 그렇지 않으면 오류 메시지가 없습니다. 매개변수가 작동하지 않는 이유는 무엇입니까?

env 파일 상단에 #!/bin/ksh는 없지만 내보내기 목록이 있습니다. m.env:

export GROOVY_dir=${M_HOME}/dsa5/oraclev6/groovy
etc

utils.michele.ksh:

#!/bin/ksh  #I added this, former version did not have it
...
function m_F {
  when getopts f:t: opt; do
    case $opt in
      f) ARGVAL="OPTARG"; shift;;
      t) DEVCMD="OPTARG"; shift;;
      ?) ;;
    esac
  done

  M_SITE_NAME="$1"

  echo "M_HOME:" $M_HOME  #looks good
  echo "M_SITE_NAME:" $M_SITE_NAME  #problem..gives garbage: -techo "No skipping"  

  # Set site, ID
  M_F_SITE=$(eval echo \$${M_SITE_NAME}_FSITE)  #gets from env var, but not filling
  [[ -z "$M_F_SITE" ]] && m_Log "m_F: \$M_F_SITE not found" && m_exit
  echo "M_F_SITE here: $M_F_SITE"  #problem..gives garbage...hBtecho No skipping_FSITE

... elif [[ "ARGVAL" == "DEV_OVR" ]];

관련 정보