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