"/ dir"というディレクトリがあります。このディレクトリの中に私はarg1_config.tcl
、arg2_config.tcl
、arg3_config.tcl
という名前のファイルを持っています。同じ拡張子のファイルがさらに存在する可能性があります。私はこの場合、arg1、arg2、arg3のエイリアスを動的に生成しようとしています。変数を使ってシェルスクリプトにエイリアスを作成する
foreach i (`ls <path>/dir/*.tcl`)
set app = `echo $i | sed -e 's/.*\///g' | sed 's/_config.tcl//g'`
echo "app is $app"
alias $app 'run -app $app' # run is an internal script that takes arg1/2/3 as a switch
echo "alias $app 'run -app $app'"
end
私は、このファイルをソースする場合、それは
app is arg1
alias arg1 'run -app arg1'
app is arg2
alias arg2 'run -app arg2'
app is arg3
alias arg3 'run -app arg3'
を印刷し、私はwhich arg3
を実行したときしかし、それは-app $のアプリを実行するために、エイリアスとアプリ値が何らかの形で必ずforeachループ、すなわちを出た後、最後の値であると言いますこの場合arg3。私はすなわち、上記印刷メッセージのようなエイリアスを作成することはできませんよ。
alias arg1 'run -app arg1'
alias arg2 'run -app arg2'
alias arg3 'run -app arg3'
単一引用符を使用すると、変数が展開されなくなります。二重引用符に切り替えます。 –
ありがとうグレン!それが問題でした。二重引用符に切り替えると – Rancho