我对如何使用陷阱有一个温和的理解,但不能在我的生活中弄清楚如何捕获从/ dev/tcp返回的错误.
当运行"cat </ dev/tcp/$ URL/$ PORT",其中URL是导致"connect:Connection refused"的服务器时,我无法弄清楚如何捕获该错误.
如果有人对这种情况下如何使用陷阱有任何见解,那将非常有帮助.我处理它的当前方式是这样的:
if [ $? != 0 ]; then
echo "error"
fi
Run Code Online (Sandbox Code Playgroud)
这使我能够在发生错误时提交动作,但这是我知道如何处理这个特定问题的唯一方法.我知道,这不是正确的做法,但这是我唯一可以开展的工作.
如果有人有任何见解如何在Bash中解决这个问题会很棒.不,我不能使用netcat.
我目前有一个自定义着色器在天幕上绘制渐变,并希望在天幕前面有一个太阳/月亮(从用户的角度来看).最简单的方法就是拥有太阳和月亮的精灵,但出现的问题是精灵会被留在天幕内(精灵位于天幕的前方和中间位置).我试图用polygonoffset解决这个问题,但这似乎不适用于精灵对象.
所以我的问题是,如何在天空之上设置太阳/月亮而不必修改我的自定义天幕着色器以添加渐变的太阳/月亮纹理(这可能最终会非常困难)?
下面是我的天空着色器的代码.
new THREE.ShaderMaterial({
uniforms: {
glow: {
type: "t",
value: THREE.ImageUtils.loadTexture(DEFAULT_PATH+"glow2.png")
},
color: {
type: "t",
value: THREE.ImageUtils.loadTexture(DEFAULT_PATH+"sky2.png")
},
lightDir: {
type: "v3",
value: self.lightPos
}
},
vertexShader: [
"varying vec3 vWorldPosition;",
"varying vec3 vPosition;",
"void main() {",
"vec4 worldPosition = modelMatrix * vec4(position, 1.0);",
"vWorldPosition = worldPosition.xyz;",
"vPosition = position;",
"gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);",
"}"
].join("\n"),
fragmentShader: [
"uniform sampler2D glow;",
"uniform sampler2D color;",
"uniform vec3 lightDir;",
"varying vec3 vWorldPosition;",
"varying vec3 vPosition;", …Run Code Online (Sandbox Code Playgroud)