0

私はbashでスクリプトを書いています。私はそれを呼び出す

find *.zip -type f -exec ./myscript.sh {} \;

スクリプトの先頭で、次のような別のスクリプトを呼び出します。

#!/bin/bash
. ticktick.sh

次のエラーが表示されます

.: ticktick.sh: file not found

このようにスクリプトを呼び出すと

./myscript.sh somefile.zip

それは機能します ticktick.sh スクリプトを別のディレクトリのパスに配置すると、スクリプトが壊れるため、それはオプションではありません。検索で呼び出されたスクリプトが持っている特別な種類のコンテキストはありますか? 私は明らかにBASHスクリプトの初心者です。どんな助けでもいただければ幸いです

4

1 に答える 1

1

2つの問題があると思います。

1 .:現在のディレクトリ内のすべてのzipファイルを検索する場合は、次のコマンドを作成する必要があります

find . -type f -name *.zip -exec ...

2.:前に./を付けてmyscript.shを実行します。したがって、myscript.shは現在の作業ディレクトリにある必要があります。スクリプトが/home/ jd /にあり、/ home /から実行した場合、myscript.shは見つかりません。まず、ファイルのディレクトリを決定する必要があります。

install_path=$(dirname $(readlink -f $0))

したがって、完全な検索コマンドは次のとおりです。

find . -type f -name *.zip -exec $install_path/myscript.sh {} \;

myscript.shファイルは、ticktick.shと同じディレクトリにある必要があります

于 2012-08-13T21:43:20.673 に答える