SHELL--变量说明

SHELL变量详解
目 的:回顾总结SHELL中变量方便查阅
SHELL中变量大体上为为以下几种--本地变量,环境变量,变量替换(显示变量),位置变量,标准变量,特殊变量,影响变量的命令。

相应说明:

1.本地变量:本地变量在用户当前SHELL生命周期中使用【你登录的当前的SHELL会话也就是你的SHELL生命周期】,SET命令可以显示本地所有的变量,设置就是变量名=值。如果会话退出,重新登录进来你会发现你设置的变量没有了。如:
bb
变量也可以设置为只读,只读就是不能对变量做修改了,如:
bb
这时候修改就会出现错误信息,我们可以用readonly命令来查看当前的只读变量。
bb

2.环境变量。环境变量是用于所有用户的进程【经常称为子进程】。登录进程称为父进程。SHELL中执行的用户进程均称为子进程。本地变量只是用于本地SHELL的进程。环境变量可用于所有子进程,包括编辑器,脚本和应用。设置当前用户的环境变量可以在$HOME/.bash_provile中设置,如果要对所有用户的环境变量都设置就要在/etc/profile中设置。环境变量是通过export来设置的,如:cat /etc/profile
bb

当然我们可以自己设置环境变量,如:export var3="value3".可以通过命令env或者 export查看环境变量,如:
bb
同样也可以通过readonly设置环境变量为只读,这时就不能对它修改了
3.变量替换--变量替换就是用变量的值替换它的名字,替换方法1.ECHO2.在变量名前加$,可以显示单个变量取值.还有一些其它的变量替换的方式。如:
${变量名}==显示变量值
${变量名:+value}==如果设置了变量名则显示其值VALUE,否则为空
bb
${变量名:?值}==如果末设置变量名,则显示用户定义的错误信息value
bb
${变量名:-value}==如果没有设置变量名,显示VALUE值
bb
${变量名:=value}==如果没有设置变量名,设置它,并显示值
bb
共6种变量替换的方式。
4.变量清除
用命令unset 就可以清掉变量了。如

bb

如果变量是readonly的话,那么是不能取消的

5.位置变量
shell中的位置变量有10个目前。$0....$9.作用是在脚本中使用位置参数,向操作系统传递参数。$0--代表脚本名字,其它的就要看具体脚本中的参数,如果脚本中的第一个参数是A那么$1=A.如:

bb

向系统中传递参数,如:查找指定目录是否有位置变量中指定的文件
bb

6.标准变量
bash默认建立了一些标准环境变量,可在/etc/profile中定义.如HOME,IFS【这是个分割符号】,LOGNAME,MAIL,MAILCHECK,EXINIT等。

bb

如TERM==表示终端类型。PATH==可执行文件寻找路径.TZ==表示时区,PS1==用户提示信息格式,如:[root@oraclelinux shtest]#.PS2==一行上面有多个命令时要用到PS2.PWD==代表当前目录。SHELL==代表当前SHELL是那一种类型

7.特殊变量
$#==传递到脚本的参数个数
$*==
$$==脚本运行的当前进程ID号
$@==这个与$#相同使用时加单引号
$-==显示SHELL使用的当前选项
$?显示命令的退出状态。
8.影响变量的命令
declare,exoort,
shift[用于移动位置变量],
typeset用于显示或者设置变量是declare同义词
UNSET.如:

bb

如果是shift2 就是在移动两个位置。






























fj.png1.JPG

fj.png2.JPG

fj.png3.JPG

fj.png4.JPG

fj.png5.JPG

fj.png6.JPG

fj.png7.JPG

fj.pnga.JPG

fj.pngb.JPG

fj.pngc.JPG

fj.pngd.JPG

fj.pnge.JPG

fj.pngf.JPG

fj.pngg.JPG

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15720542/viewspace-721422/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15720542/viewspace-721422/

<think> 嗯,用户想了解CShell-v选项的作用和使用方法。从提供的引用材料来看,引用[3]提到了"-x"选项用于调试shell脚本,但没有直接提到-v选项。不过引用[3]中描述的是bash shell的调试功能,而用户问的是cshell。 让我回忆一下cshell的特性:cshell-v选项应该是verbose模式的开关。它会让脚本执行时打印出每一行原始命令,类似于bash的-x选项,但输出的是未经解析的原始命令。 用户给的材料中引用[1]详细说明了cshell参数传递机制($argv数组),引用[2][3]主要讲bash的选项处理,引用[4]是无关的PowerCat工具。需要特别注意区分cshell和bash的特性差异。 用户可能是脚本调试的新手,混淆了不同shell的调试选项。需要明确说明: 1. -v在cshell中的具体行为:逐行输出原始命令 2. 对比bash的-x选项(输出变量替换后的命令) 3. 使用场景举例(快速定位语法错误) 4. 操作演示(命令行和脚本两种启用方式) 还需要提醒用户注意cshell和bash在语法上的根本区别,避免误导。比如bash中常用[ ]做条件判断,而cshell用if (...) 这种C语言风格。 </think> 在C Shell中使用`-v`选项主要用于**开启详细输出模式(verbose mode)**,有助于脚本调试和命令追踪。以下是具体解析: --- ### **作用说明** 1. **逐行打印原始命令** `-v` 选项会让脚本**在执行前**打印出其读取的内容(包括注释、变量声明等),但**不显示执行结果**。例如: ```bash # 示例脚本 test.csh # 这是一条注释 set var = "Hello" echo $var ``` 执行 `csh -v test.csh` 输出: ``` # 这是一条注释 set var = "Hello" echo $var Hello # 实际执行结果仍正常输出 ``` 2. **与调试选项 `-x` 的区别** - `-v` 显示原始脚本内容(所见即所得),不展示变量替换或命令执行细节。 - `-x` 会**在执行时**展开变量并显示实际执行的命令(引用[3]中提到的 `sh -x` 类似)。例如: ```bash # 执行 csh -x test.csh set var = Hello echo Hello # 变量 $var 被展开后的实际命令 Hello ``` --- ### **使用方法** #### 1. **命令行直接启用** ```bash csh -v your_script.csh # 执行时启用详细模式 ``` #### 2. **脚本内启用** 在脚本首行添加选项: ```bash #!/bin/csh -v echo "执行开始" set name = "User" echo "Hello, $name!" ``` 输出: ``` #!/bin/csh -v echo "执行开始" set name = "User" echo "Hello, $name!" 执行开始 Hello, User! ``` #### 3. **临时切换模式** 脚本运行时动态启用: ```bash #!/bin/csh echo "普通模式" set verbose # 开启详细模式 set file = "data.txt" unset verbose # 关闭详细模式 echo "结束" ``` --- ### **典型应用场景** 1. **语法检查** 排查脚本结构错误(如缺失 `endif`、`endsw`)。 2. **注释与变量声明验证** 确认注释和变量初始化逻辑是否按预期加载。 3. **与 `-x` 协同调试** 先用 `-v` 检查原始脚本,再用 `-x` 分析执行细节(引用[3]的调试思路)。 > ⚠️ **注意**:C Shell (`csh`) 与 Bash 的选项行为不同,例如: > - `csh -v` 显示原始代码,而 `bash -v` 行为类似。 > - 参数引用方式差异:C Shell 使用 `$argv[1]`,Bash 使用 `$1`(引用[1][2])。 --- ### **相关问题** 1. C Shell中 `-x` 调试选项与 `-v` 的具体差异是什么? 2. 如何排查C Shell脚本因变量未定义导致的执行错误? 3. C Shell和Bash在参数传递机制上有哪些关键区别?[^1][^2] [^1]: Cshell基本語法 --- 從入門到精通 [^2]: shell --选项详解 [^3]: “-x"选项可用来跟踪脚本的执行 [^4]: PowerCat 命令解析
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值