1

スクリプト (たとえば、myScript.ksh) には、ファイルへのパスを含む変数があります。

file=/home/vikas/input.ksh

私のコードでは、そのファイルから何かが必要なので、このファイルに対して通常の cat と grep を実行しています。

myVariable=`cat $file | grep "on this line" | cut -d"'" -f2`

myScript.ksh を起動するたびにエラーが発生するようになりました

cat: cannot open /home/vikas/input.ksh

しかし、端末で同じことを直接行うと、ファイルinput.kshの内容を見ることができます

何が間違っているのかわかりません。誰か助けてください。

4

3 に答える 3

4

/Linux では代わりにスラッシュを使用します。\

于 2012-07-16T15:24:05.783 に答える
3

バックスラッシュではなくスラッシュを使用する

file=/home/vikas/input.ksh

編集:OK、それは問題ではありませんでした。

現時点でわかっていることは次のとおりです。

  • 彼は正しいスラッシュを使用しています。
  • 彼がファイル名をハードコーディングすると、スクリプトは機能します。
  • スクリプトは別のユーザーとして実行されています (私は思いますか?)。

スクリプトを実行するユーザーを指定し、次の出力を投稿してください。

ls -l /home/vikas/input.ksh

また、の出力はfile myScript.ksh何ですか?

于 2012-07-16T15:24:22.133 に答える
0

はい、最終的に問題は解決しましたが、解決策がおかしいことがわかり、なぜ機能したのか理解できませんでした。実際、私はこの変数を他のファイルから読み取っていましたが、このようなものでした

file=$HOME/vikas/input.ksh 

問題は $HOME にありました 私がしたこと $HOME を変数ファイルから削除し、これを実行して再度追加しました

file=`echo $file | awk 'BEGIN { FS="/"; OFS="/" } {$1=""; print $0}'`

file=$HOME$file 

その後、 cat $file を実行しましたが、うまくいきました

于 2012-07-17T09:03:03.600 に答える