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" ]];

関連情報