Linux cshスクリプトで$_値をオーバーライドする

Linux cshスクリプトで$_値をオーバーライドする

Linux cshスクリプトで$_値をオーバーライドしたいと思います。

cmdlineを使用してxtermでこのスクリプトを実行します。

chmod +x test.csh
test.csh

Test.cshの内容:

#!/usr/bin/tcsh
....
source sourceme.rc
....

sourceme.rcの内容:

...  
set cmd = "import sys; import os; print os.path.abspath(os.path.join(os.path.dirname(sys.argv[2]),'checkenv.py'))"
set checkenv = `python -c "$cmd" $_`
...

sourceme.rcの$_値は "ソースソースme.rc「もし」ソースソースme.rc「xtermで直接実行されます。

しかし、ソースソースme.rcxtermを使用する代わりにcshスクリプトを使用して実行して直接インポートするため、$_値は空です。

私は見たここ$_は変更されていませんが、test.cshで$_の値を上書きする方法はありますか?例えば

set_=いくつかの値

sourceme.rcの内容を編集したくないことを考えると

ありがとう

ベストアンサー1

君はこれができないだろうとても良い

では、入力バッファ(非対話型シェルでは空)の内容を常に取得して上書きすることはできませんtcsh$_

このパッチワークは機能できます(ymmv)。

set lastline = 'source sourceme.csh'
sed 's/\$_\>/$lastline/g' sourceme.csh | source /dev/stdin

bashdash、などとtcsh異なり、外部コマンドではない場合、パイプの右側は現在のプロセスで実行されるため、すべてのコマンドまたは変数の割り当てはデフォルトのシェルsourceme.cshで発生します。

おすすめ記事