ディレクトリをインポートするスクリプトを期待していますか?

ディレクトリをインポートするスクリプトを期待していますか?

Bashスクリプトは機能しますBASEDIR=$(dirname $0)が、Expectスクリプトではどのように実行しますか?

を使用すると、BASEDIR=[dirname $argv0]"無効なコマンド名" dirname"エラーが発生します。

ベストアンサー1

TCLのさまざまなファイル操作は、次のように構成されています。file(n)コマンドを含むプログラムですdirname

% expect
expect1.1> file dirname $argv0
.

ただし、TCL(またはシェルコード)の実行方法によっては、有効性が設定されているか、無効であるか検証されない可能性があるため、コードの方法によってディレクトリも異なる可能性があるため、エラーチェックが必要になる場合があります。走る。

% cat dirname
#!/usr/bin/env expect
set basedir [file dirname $argv0]
puts $basedir
% chmod +x dirname
% ./dirname
.
% ~/tmp/dirname
/Users/jhqdoe/tmp
% 

file normalize常に完全なパスが必要な場合はを使用してください。

% expect
expect1.1> set basedir [file normalize [file dirname $argv0]]
/Users/jhqdoe/tmp

しかもTcl_FindExecutable(3)実行可能ファイル名(使用可能な場合)を公開する呼び出しinfo nameofexecutable注文する:

% expect
expect1.1> info nameofexecutable
/opt/local/bin/expect

おすすめ記事