1
Bashでは、コマンドtee
が実行された後、一部のグローバル変数が予期せずアンセットされます。予期しない環境変数unset
テストコードは、次のように
#!/bin/bash
function set_global_variable(){
GLOBAL_VARIABLE="global_variable"
echo "set GLOBAL_VARIABLE($GLOBAL_VARIABLE)"
}
function get_global_variable(){
echo "get GLOBAL_VARIABLE($GLOBAL_VARIABLE)"
}
function normal_test(){
unset GLOBAL_VARIABLE
set_global_variable
get_global_variable
}
function unnormal_test(){
unset GLOBAL_VARIABLE
set_global_variable |tee random_file
get_global_variable
}
echo "normal_test"
normal_test
echo "unnormal_test"
unnormal_test
結果:
normal_test
set GLOBAL_VARIABLE(global_variable)
get GLOBAL_VARIABLE(global_variable)
unnormal_test
set GLOBAL_VARIABLE(global_variable)
get GLOBAL_VARIABLE()
unnormal_test
におけるGLOBAL_VARIABLEの値がヌルである、なぜですか?
パイプでは、コマンドはサブシェルで実行されます。つまり、環境に対する変更はすべて親シェルでは表示されません。 – Leon