2

以下が機能しない理由を教えてもらえますか?

$ groups
  staff btgroup
$ ls -l
  total 64
  -rw-rw----    1 sld248   btgroup       26840 Apr 02 13:39 padaddwip.jks
  -rwxrwx---    1 sld248   btgroup        1324 Apr 02 13:39 padaddwip.ksh
$ ./padaddwip.ksh
  ksh: ./padaddwip.ksh:  not found.
$ echo $?
  127

これは、問題なく動作する別のスクリプトとほぼ同じです。パーミッションや所有権に関して、この 2 つの違いはわかりません。

4

4 に答える 4

4

次の 2 つの問題が考えられます。

  • Shebang ラインが間違っています (ghostdog がほのめかしたように)

  • スクリプトは Windows から保存されたもので、DOS の行末があります。

後者については、

head padaddwip.ksh | cat -vet | head -1

コマンドは、で終わらないシバン行を生成する必要があり^Mます。^MそれがDOS でエンコードされたファイルで終わる場合、修正方法は次のとおりです。

cp padaddwip.ksh padaddwip.ksh.bak
dos2unix padaddwip.ksh.bak > padaddwip.ksh
./padaddwip.ksh

dos2unix のないシステムでは、次を使用できます。

cat padaddwip.ksh.bak | tr -d "\r" > padaddwip.ksh
于 2010-04-14T14:21:40.690 に答える
1

推測で、あなたのシバンをチェックしてくださいpadaddwip.ksh。のようなものになるはずです#!/bin/ksh。そうでない場合は、を使用which kshして、インストールされている場所を確認しますksh。または、インタープリター (ksh) を呼び出してスクリプトを実行することもできます。

$ /bin/ksh padaddwip.ksh

あなたができる別の方法は、シバンを次のように変更することです#!/usr/bin/env ksh

また、スクリプトを実行するユーザーのプライマリ グループが次のようになっていることを確認します。btgroup

于 2010-04-14T14:03:43.177 に答える
1

スクリプトから迷惑な^M文字を削除する別の方法は、vi でファイルを開き、次に入力してヒアが作成される:%s/^M//g場所に (vi 内で sed) と入力することです。バックアップファイルを作成する必要がなく、すぐに結果が表示されるため、私は個人的にこの方法が好きです-私のOCDの習慣です-^MCtrl-VCtrl-M

trまた、シェルまたはサイト固有の問題である可能性があるなど、文字の使用および制御に関していくつかの奇妙な問題が\rありましたが、そのような場合、上記の方法またはコマンドラインから sed を使用する必要がありました...非常に上記の DVK に似ています。次に実行してsed -e 's/^M//g' padaddwip.ksh.bak > padaddwip.ksh作成する場所と同じです(viエディターモードの場合)。^MCtrl-VCtrl-M

于 2010-04-14T21:51:24.293 に答える
0

シバンは悪いです。

コマンドラインでシェル インタープリターを使用してシナリオをテストします。

ksh padaddwip.ksh
于 2010-04-26T07:02:22.113 に答える