shell 脚本中$$,$#,$?分别代表啥意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell 脚本中$$,$#,$?分别代表啥意思?相关的知识,希望对你有一定的参考价值。
参考技术Ashell 脚本中$$,$#,$?分别代表什么意思?
给你个全的,你在Linux环境下多试下就明白了:
$0 这个程式的执行名字
$n 这个程式的第n个参数值,n=1..9
$* 这个程式的所有参数,此选项参数可超过9个。
$# 这个程式的参数个数
$$ 这个程式的PID(脚本运行的当前进程ID号)
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项,与set命令功能相同
$@ 跟$*类似,但是可以当作数组用
shell脚本中 $# 是代表什么?
代表你脚本的参数个数
比如./test.sh var1 var2 var3
$#就是3,因为有3个变量
QTP VBS脚本中,Exist(3)代表什么意思啊?
判断对象在3秒内是否在应用程序中存在,3秒内的任何时候若存在了,则立即完成该语句并返回True(最短约0秒);若超过3秒后仍没有在应用程序中存在(其实就是应用程序中没有符合该对象属性描述的控件),则返回false,但是不会在result中将该语句认定为执行fail
shell脚本中a=$1:$2什么意思
a=\'123\'
b=\'456\'
c=$a+$b
echo $c
>>>123:456
这就是结果咯,$1代表第一个命令行参数,$2代表第二个参数
例如你的脚本名叫test.sh,那么执行test.sh 123 456,你的$a就是123:456
shell脚本中变量前加$表示什么意思?
就是一个规定的标识吧,告诉shell,这个时候该取$后面这个变量的值了。
unity3d的Js脚本中,var bPowerupStatus : boolean[];代表什么意思?
javascript - BakeMaterial.js
class BakeMaterialSettings
private static var kEditorPrefsName = "BakeMaterialSettings";
static var kBakingLayerShouldBeUnusedInScene = 30;
static var kStandardTexNames = new Array ("_MainTex", "_BumpMap", "_Detail", "_ParallaxMap","_Parallax");
var bakeAlpha = false;
var bakeMainTexAsWhite = false;
var minTextureResolution = 8;
var maxTextureResolution = 2048;
var emptyScene = false;
var useCustomLights = false;
var ambient = Color.black;
static var kLights = 3;
var enableLight = new boolean[kLights];
var colorLight = new Color[kLights];
var dirLight = new Vector2[kLights];
function BakeMaterialSettings ()
Load ();
function Load ()
bakeAlpha = EditorPrefs.GetBool(kEditorPrefsName + ".bakeAlpha");
bakeMainTexAsWhite = EditorPrefs.GetBool(kEditorPrefsName + ".bakeMainTexAsWhite");
minTextureResolution = EditorPrefs.GetInt(kEditorPrefsName + ".minTextureResolution", 8);
maxTextureResolution = EditorPrefs.GetInt(kEditorPrefsName + ".maxTextureResolution", 2048);
emptyScene = EditorPrefs.GetBool(kEditorPrefsName + ".emptyScene");
useCustomLights = EditorPrefs.GetBool(kEditorPrefsName + ".useCustomLights");
ambient.r = EditorPrefs.GetFloat(kEditorPrefsName + ".ambient.r");
ambient.g = EditorPrefs.GetFloat(kEditorPrefsName + ".ambient.g");
ambient.b = EditorPrefs.GetFloat(kEditorPrefsName + ".ambient.b");
ambient.a = EditorPrefs.GetFloat(kEditorPrefsName + ".ambient.a", 1.0f);
for (var q = 0; q < kLights; ++q)
enableLight[q] = EditorPrefs.GetBool(kEditorPrefsName + ".enableLight" + q);
colorLight[q].r = EditorPrefs.GetFloat(kEditorPrefsName + ".color.r" + q, 0.5f);
colorLight[q].g = EditorPrefs.GetFloat(kEditorPrefsName + ".color.g" + q, 0.5f);
colorLight[q].b = EditorPrefs.GetFloat(kEditorPrefsName + ".color.b" + q, 0.5f);
colorLight[q].a = EditorPrefs.GetFloat(kEditorPrefsName + ".color.a" + q, 1.0f);
dirLight[q].x = EditorPrefs.GetFloat(kEditorPrefsName + ".dir.x" + q);
dirLight[q].y = EditorPrefs.GetFloat(kEditorPrefsName + ".dir.y" + q);
function Save ()
EditorPrefs.SetBool(kEditorPrefsName + ".bakeAlpha", bakeAlpha);
EditorPrefs.SetBool(kEditorPrefsName + ".bakeMainTexAsWhite", bakeMainTexAsWhite);
EditorPrefs.SetInt(kEditorPrefsName + ".minTextureResolution", minTextureResolution);
EditorPrefs.SetInt(kEditorPrefsName + ".maxTextureResolution", maxTextureResolution);
EditorPrefs.GetBool(kEditorPrefsName + ".emptyScene", emptyScene);
EditorPrefs.SetBool(kEditorPrefsName + ".useCustomLights", useCustomLights);
EditorPrefs.SetFloat(kEditorPrefsName + ".ambient.r", ambient.r);
EditorPrefs.SetFloat(kEditorPrefsName + ".ambient.g", ambient.g);
EditorPrefs.SetFloat(kEditorPrefsName + ".ambient.b", ambient.b);
EditorPrefs.SetFloat(kEditorPrefsName + ".ambient.a", ambient.a);
for (var q = 0; q < kLights; ++q)
EditorPrefs.SetBool(kEditorPrefsName + ".enableLight" + q, enableLight[q]);
EditorPrefs.SetFloat(kEditorPrefsName + ".color.r" + q, colorLight[q].r);
EditorPrefs.SetFloat(kEditorPrefsName + ".color.g" + q, colorLight[q].g);
EditorPrefs.SetFloat(kEditorPrefsName + ".color.b" + q, colorLight[q].b);
EditorPrefs.SetFloat(kEditorPrefsName + ".color.a" + q, colorLight[q].a);
EditorPrefs.SetFloat(kEditorPrefsName + ".dir.x" + q, dirLight[q].x);
EditorPrefs.SetFloat(kEditorPrefsName + ".dir.y" + q, dirLight[q].y);
class BakeMaterial extends EditorWindow
private static var kMateriBakeNodeName = "__MateriaBakeSetup";
private static var kWindowMinSize = Vector2 (300, 386);
private static var settings : BakeMaterialSettings;
private static var visible : boolean = false;
private var camera : GameObject;
private var plane : GameObject;
private var previewTexture : Texture;
private var lights : GameObject[] = new GameObject[BakeMaterialSettings.kLights];
private var stateChanged = false;
private var texViewScrollPosition = Vector2.zero;
private var lastMaterial : Material;
private var originalScene = "";
private var scheduleBakeOnNextUpdate = false;
private function SetupScene ()
DestroyScene ();
var oldGo = GameObject.Find(kMateriBakeNodeName);
if (oldGo)
DestroyImmediate (oldGo);
camera = new GameObject (kMateriBakeNodeName, Camera);
plane = GameObject.CreatePrimitive (PrimitiveType.Plane);
var cam = camera;
cam.camera.backgroundColor = Color.black;
cam.camera.clearFlags = CameraClearFlags.SolidColor;
cam.camera.orthographic = true;
cam.camera.orthographicSize = 5.0;
cam.camera.cullingMask = 1 << settings.kBakingLayerShouldBeUnusedInScene;
plane.transform.parent = cam.transform;
plane.transform.position = Vector3.forward * 10.0;
plane.transform.rotation = Quaternion.Euler (0, 0, 180) * Quaternion.Euler (-90, 0, 0);
plane.layer = settings.kBakingLayerShouldBeUnusedInScene;
for (var l in lights)
l = new GameObject ("Light", Light);
l.light.type = LightType.Directional;
l.light.cullingMask = 1 << settings.kBakingLayerShouldBeUnusedInScene;
l.transform.parent = cam.transform;
l.active = false;
private function UpdateScene (m : Material)
for (q = 0; q < settings.kLights; ++q)
lights[q].active = settings.useCustomLights & settings.enableLight[q];
lights[q].light.color = settings.colorLight[q];
lights[q].transform.rotation =
Quaternion.AngleAxis(settings.dirLight[q].x, Vector3.up) *
Quaternion.AngleAxis(settings.dirLight[q].y, Vector3.right);
if (settings.useCustomLights)
RenderSettings.ambientLight = settings.ambient;
else if (settings.emptyScene)
RenderSettings.ambientLight = Color.white;
plane.renderer.material = m;
private function DestroyScene ()
GameObject.DestroyImmediate (camera);
GameObject.DestroyImmediate (plane);
GameObject.DestroyImmediate (previewTexture);
function UpdateMaterialPreview (m : Material) : RenderTexture
if (!m)
return;
var saveAmbientLight = RenderSettings.ambientLight;
var saveMainTexture = m.mainTexture;
if (settings.bakeMainTexAsWhite)
m.mainTexture = null;
setup
if (!camera)
SetupScene ();
camera.SetActiveRecursively(true);
UpdateScene (m);
var res = FindLargestTextureResolution (plane.renderer.sharedMaterial, settings.minTextureResolution, settings.maxTextureResolution);
var rt = RenderCameraToRenderTexture (camera.camera, res.x, res.y);
restore
camera.SetActiveRecursively(false);
RenderSettings.ambientLight = saveAmbientLight;
m.mainTexture = saveMainTexture;
previewTexture = rt;
return rt;
function CaptureMaterial(m : Material)
var matAssetPath = AssetDatabase.GetAssetPath (m);
var assetPath = System.IO.Path.Combine (System.IO.Path.GetDirectoryName (matAssetPath), System.IO.Path.GetFileNameWithoutExtension (matAssetPath));
var rt = UpdateMaterialPreview (m);
RenderTextureToPNG (rt, settings.bakeAlpha, assetPath + ".png");
function OnEnable ()
if (!settings)
settings = new BakeMaterialSettings ();
SetupScene ();
visible = true;
如果你还有什么不懂的,可以百度搜下:编程回忆录,他们现在正在录制这方面的教程,都是零基础开始,由浅入深。
shell脚本中的美元符号什么意思
linux shell脚本中的美元符号$,是作为shell中特殊变量使用的,具体含义:
$0 shell的命令本身(包括完整路径)
$1到$9 数字表示shell 的第几个参数
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数
$$ 脚本运行的ID号
$! 后台运行的最后一个进程的ID号
$@ 与$*相同。
$- 显示shell使用的当前选项。
$? 显示最后命令的执行状况。0表示没有错误。
javascript 脚本中 innerhtml 代表什么?
<>
<body>
<div><a href="#">aaaaa</a>
</div>
</body>
<>
innerHtml 表示指定对象内的所有内容。
比如你现在的对象是<div>标签,则innerHtml是:<a href="#">aaaaa</a>
shell脚本中 if 判断时候-s是什么意思
文件大小非0时为真
[ -f "somefile" I74 :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等,详细用法可参考《linux就该这么学》第二章,-r file 用户可读为真
-w file 用户可写为真
-x file 用户可执行为真
-f file 文件为正规文件为真
-d file 文件为目录为真
-c file 文件为字符特殊文件为真
-b file 文件为块特殊文件为真
-s file 文件大小非0时为真
-t file 当文件描述符(默认为1)指定的设备为终端时为真
指的是文件大小非0时为真。
shell中怎么判断输入的是否是数字:
第一种:sed格式
首先:我们先(在命令行直接输出模拟一下,如果都正确再在shell脚本中进行书写。)直接echo输出一下
echo "111asd"
第一步:思想
然后我们就要想一下我们要说用sed判断,但是sed的最主要的功能是什么?替换!当然是替换,既然是替换那么我们能不能直接把echo输出的数字直接替换掉,然后看这个输出还剩下什么呢?如果我们剩下的空,那么我就基本可以确定我echo输出的就是空,如果我sed替换之后不是空,那么我是不是就是可以认为我echo输出的不是数字或不全是数字呢?
第二步:命令行测试:
[root@localhost shell]# echo "111asd" | sed \'s#[0-9]##g\' | cat -A
asd$
[root@localhost shell]# echo "111" | sed \'s#[0-9]##g\' | cat -A
$
第三步:进行shell测试
经过第二步我们很明显就能看出来这个想法是能够实现的。所以在shell中配合-z(zero)-n(no zero)是完全可以实现的,所以这个时候我们就可以进行脚本的编写测试了。
#!/bin/bash
##############################################################
# File Name: test.sh
# Version: V1.0
# Author: ls
# Created Time : 2017-02-24 06:25:13
# Description:
##############################################################
#交互式外部读取
read -p "pleace input: " a1
#if进行数字判断
if [ -z "$(echo $a1 | sed \'s#[0-9]##g\')" ]
then
#如果是数字输出yes给$?一个1的返回值并退出。
echo "yes"
exit 1
else
#如果不是数字输出no给$?一个1的返回值并退出。
echo "no"
[root@localhost shell]# sh test.sh
pleace input: 1
yes
[root@localhost shell]# sh test.sh
pleace input: q1
no
Linux shell 脚本中, $@ 和$# 分别是啥意思?
直接看示例:[root@localhost xly]# cat t.sh
#!/bin/bash
echo $#
echo $@
[root@localhost xly]# sh t.sh
0
[root@localhost xly]# sh t.sh a b c
3
a b c
说明:
$@表示所有参数
$#表示所有参数的个数 参考技术A
$@:表示所有脚本参数的内容
$#:表示返回所有脚本参数的个数。
示例:编写如下shell脚本,保存为test.sh
#!/bin/sh
echo "number:$#"
echo "argume:$@"
执行脚本:
./test.sh first_arg second_arg
说明:给脚本提供了两个参数,所以$#输出的结果是2,$@代表了参数的内容!
参考技术BLinux shell 脚本中, $@ 和$# 分别是:
$@:表示所有脚本参数的内容
$#:表示返回所有脚本参数的个数。
示例:编写如下shell脚本,保存为test.sh
#!/bin/sh
echo "number:$#"
echo "argume:$@"
执行脚本:
./test.sh first_arg second_arg
说明:给脚本提供了两个参数,所以$#输出的结果是2,$@代表了参数的内容!
参考技术C $#,表示参数个数$@,所有参数,并且所有参数都是独立的
例如 command a b c d
$#=4
$@="a" "b" "c" "d"
$@可以用来做 for each in本回答被提问者采纳 参考技术D $@表示所有参数
$#表示参数的个数
以上是关于shell 脚本中$$,$#,$?分别代表啥意思?的主要内容,如果未能解决你的问题,请参考以下文章