shell 管道导致的变量重置问题】的更多相关文章

测试脚本: #!/bin/sh flag= func() { flag= } main() { func | echo "flag=$flag" } 输出显示的flag=0! 参考:https://www.cnblogs.com/super119/archive/2010/12/18/1909829.html…
SHELL中的特殊变量和结构 表格 B-1. 特殊的shell变量 变量 含义 $0 脚本名字 $1 位置参数 #1 $2 - $9 位置参数 #2 - #9 ${10} 位置参数 #10 $# 位置参数的个数 "$*" 所有的位置参数(作为单个字符串) * "$@" 所有的位置参数(每个都作为独立的字符串) ${#*} 传递到脚本中的命令行参数的个数 ${#@} 传递到脚本中的命令行参数的个数 $? 返回值,显示最后命令的退出状态.0表示没有错误,其他任何值表明有…
前言: 大家对shell脚本应该都不算陌生了,如果突然问你什么是shell脚本?是干什么用的?由什么组成以及怎么使用?变量的概念是什么?作用范围是什么?变量间的算术运算怎么表示?你能很容易答出来吗 本文整理自博主当年的学习笔记,若有疏漏欢迎指正! Shell编程规范与变量 学习目标: 掌握shell脚本编程规范 掌握管道,重定向,变量 目录结构: Shell脚本的概念 将要执行的命令按顺序保存到一个文本文件 给文件可执行权限,便可运行. 可以结合各种shell控制语句以便完成更复杂的操作 脚本文…
#!/bin/bash argv=" if [ -z "$argv" ] then echo "argv is empty" else echo "argv is not empty" 说明,-z选项判断一个变量是否为空,如果为空则执行then部分,如果不为空,则执行else部分. 另外,在shell中建议给变量加上双引号,比如如果test的内容是argv="adsf adf 1234e"有空格,变量不加双引号执行i…
Shell(1)---变量 初衷:学习shell的目的很简单,自己经常在linux服务器上做各种操作,而且基本上是一些相同的命令操作,所以就想通过shell脚本来启动就行,能够节省一定的开发时间,提高工作效率. 一.shell变量 1.定义变量 Shell 支持以下三种定义变量的方式 xub$ name=value xub$ name='value' xub$ name="value" # name 是变量名,value 是赋给变量的值. 区别 如果 value 不包含任何空白符(例如…
(1)sehll实例 # cat subshell #!/bin/bash if (set -u; : $var); then #冒号与$间有空格 echo "Variable is set." else echo "Not set" fi (2)输出结果: # ./subshell ./subshell: line 3: var: unbound variable Not set (3)原因分析: 其中set -u命令用于设置shell选项,u是nounset表示…
Shell当中的特殊变量 一.保留变量 $IFS 这个变量中保存了用于分割输入参数的分割字符,默认识空格. $HOME 这个变量中存储了当前用户的根目录路径. $PATH 这个变量中存储了当前 Shell 的默认路径字符串. $PS1 表示第一个系统提示符. $PS2 表示的二个系统提示符. $PWD 表示当前工作路径. $EDITOR 表示系统的默认编辑器名称. $BASH 表示当前 Shell 的路径字符串. $0, $1, $2, ... 表示系统传给脚本程序或脚本程序传给函数的第0个.第…
一 脚本的创建和执行 1. 创建文件*.sh,文件后缀为sh 2. 编辑脚本 首行必须为:#!/bin/bash   #指定解释脚本的shell 3. 赋权 chmod u+x a.sh 4. 执行 ./a.sh 二 shell脚本中的变量 1.变量的定义与删除 name="hello" #定义变量=前后不能有空格 unset name #删除变量 a. 当前shell中定义的变量只在当前shell有效 b. 不论是普通变量还是环境变量,归根结底都是变量,都遵循变量的基本操作 2.环境…
灵活结合Linux/Unix Shell 与SQL 之间的变量传输,极大程度的提高了DBA的工作效率,本文针对Linux/Unix shell sql 之间传递变量给出几个简单的示例以供参考. Linux/Unix 下调用SQL,RAMN 请参考:Linux/Unix shell 脚本中调用SQL,RMAN脚本 一.示例 1.shell变量接受sql返回值之方式一 oracle@SZDB:~> more ./retval.sh #!/bin/bash RETVAL=`sqlplus -silen…
看了前面一节:linux shell数据重定向(输入重定向与输出重定向)详细分析 估计还有一些朋友是头晕晕的,好复杂的重定向了.这次我们看下管道命令了.shell管道,可以说用法就简单多了. 管道命令操作符是:”|”,它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandard error 信息没有直接处理能力.然后,传递给下一个命令,作为标准的输入 standard input. 一.管道命令使用说明: command1正确输出,作为c…