(1)
shell: 弱类型编程语言

强:变量在使用前,必须事先声明,甚至还需要初始化;
弱:变量用时声明,甚至不区分类型;

变量赋值:VAR_NAME=VALUE

(2)
bash变量类型:
环境变量
本地变量(局部变量)
位置变量
特殊变量

(3)变量的类型及作用域
•本地变量:
set VARNAME=VALUE: 作用域为整个bash进程;
引用变量:${varname}, 在不引起歧义的情况下,括号可以省略。

•局部变量:
local VARNAME=VALUE:作用域为当前代码段;

•环境变量:作用域为当前shell进程及其子进程;
export VARNAME=VALUE //定义环境变量方式1.
或者:
VARNAME=VALUE
export VARNAME //定义环境变量方式2.

•位置变量:
$1, $2, ...

•特殊变量:
$?: 上一个命令的执行状态返回值;

•程序执行,可能有两类返回值:
程序执行结果
程序状态返回代码(0-255)
0: 正确执行
1-255:错误执行,1,2,127系统预留;

(4)输出重定向:
>
>>
2> //错误重定向
2>> //错误追加重定向
&> //输入命令,正确和错误信息都不输出在屏幕上,直接输到你重定向的一个文件内。

特殊的输出重定向:
/dev/null: 软件设备, bit bucket,数据黑洞
解释:
/dev/null 代表空设备文件,它等价于一个只写文件,所有写入它的内容都会永远丢失,而尝试从它那儿读取内容则什么也读不到。

1:在不想把标准输出和标准出错信息输出到控制台,也不想重定向到文件时经常使用
2:不能忽略其读入功能。从/dev/null读入时都是0
3:系统的垃圾桶,类似于Windows的回收站,不同的是这个设备有去无回,而回收站还是可以回收的。
如果程序有输出(标准、错误等),而你又不想让它输出到任何文件、终端,就可以重定向到这个设备去
4:空设备,bit垃圾箱

0:表示键盘输入(stdin)
1:表示标准输出(stdout),系统默认是1
2:表示错误输出(stderr)

1>/dev/null等同于 >/dev/null
>/dev/null 2>/dev/null 等同于 >/dev/null 2>&1
&1:&表示等同于的意思,2>&1,表示2的输出重定向等于1

例:
①禁止标准输出.

cat $filename >/dev/null
# 文件内容丢失,不会输出到标准输出,.

②禁止标准错误

rm $badname 2>/dev/null
#删除文件错误时,不会再有提示到终端,都丢到/dev/null里去了

③禁止标准输出和标准错误的输出.

cat $filename 2>/dev/null >/dev/null
# 如果"$filename"不存在,将不会有任何错误信息提示.
# 如果"$filename"存在, 文件的内容不会打印到标准输出.
# 因此, 上面的代码根本不会输出任何信息.
# 当只想测试命令的退出码而不想有任何输出时非常有用。

(5)
撤消变量:
unset VARNAME

(6)
•查看当shell中变量:
set

•查看当前shell中的环境变量:
printenv
env
export

•给字符串增加值
例如:test=aaa
test=$test:bbb //假设以:号分隔,此时test=aaa:bbb

同样,环境变量PATH也可以这样处理。
export PATH=$PATH:/usr/local/python/bin //加不加export都可以

(7)
#!/bin/bash //which bash可以显示路径
# 注释行,不执行
添加执行权限:chmod +x test.sh
如果不添加执行权限,也可以用:bash test.sh

脚本在执行时会启动一个子shell进程;
命令行中启动的脚本会继承当前shell环境变量;
系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量;

练习:写一个脚本,完成以下任务
1、添加5个用户, user1,..., user5
2、每个用户的密码同用户名,而且要求,添加密码完成后不显示passwd命令的执行结果信息;
3、每个用户添加完成后,都要显示用户某某已经成功添加;
useradd user1
echo "user1" | passwd --stdin user1 &> /dev/null
echo "Add user1 successfully."

linux基础07-bash编程(变量,变量类型)的更多相关文章

  1. linux基础之bash特性

    linux基础之bash特性 1.命令历史 命令历史包含的环境变量 $HISTSIZE:命令历史记录的条数 $HISTFILE:命令历史文件~/.bash_history $HISTFILESIZE: ...

  2. bash编程-Shell变量

    bash中,所有变量的值默认均为字符串. 1. 变量操作 调用变量 $变量 查看变量(所有类型) set 删除变量 unset 变量 2. 变量分类 2.1 自定义变量 自定义变量仅对当前Shell有 ...

  3. Linux基础知识_Shell编程笔记

    以下是一些 常用功能 , 基于 centos 6.5 x64 # cp /etc/localtime /etc/localtime.org # rm /etc/localtime # ln -s /u ...

  4. linux基础6-bash shell编程

    1. type [-ta] name 一般情况下,type命令被用于判断另外一个命令是否是内置命令,但是它实际上有更多的用法. 1.1.判断一个名字当前是否是alias.keyword.functio ...

  5. Linux基础之bash shell介绍及基本特性

    今天继续讲Linux基础知识,内容是关于bash shell的.分享以下bash shell的相关知识,例如基本特性等.  1.8)bash shell的介绍 1.8.1)什么是bash shell ...

  6. BASH 编程之变量高级篇

    内部变量 • $$与$BASHPID都代表着执行程序的进程 ID,我们可以通过 echo 打印,并用 ps 指令检查得到相同的进程 ID [root@oracle ~]# echo $BASHPID ...

  7. Java基础总结--Java编程环境变量配置

    1.jdk--bin--都是命令行程序(图形化是对命令行的封装)eg javac&java执行javac必须切换到其所在目录--太麻烦---想在任意目录下使用要执行一个命令--先在当前目录下找 ...

  8. Linux基础(05)socket编程

    Linux的核心思想之一 "一切皆文件" 内容 , socket在Linux内核的实现的代码及TCP和UDP的实现 网络编程常用头文件: https://blog.csdn.net ...

  9. Linux基础之-Bash命令优先级

    一. Bash简介 命令解释器,也就是 Bourne Again Shell,起源于shell.shell俗称壳,它是指UNIX系统下的一个命令解析器:主要用于用户和系统的交互.UNIX系统上有很多种 ...

随机推荐

  1. fjwc2019 D3T2 送分题

    #185. 「2019冬令营提高组」送分题 这是原题..... P3615 如厕计划 手推一推你发现,显然男性不能多于女性. 然后你或许可以发现一个神奇的性质. 对于每个序列,我们记$M$为$1$,$ ...

  2. IDEA——找不到或无法加载主类的一种暴力解决方法

    对于用maven构建的java项目,可以利用maven工具编译一下,大致上可以解决很多奇奇怪怪的问题. 具体操作如下: 首先找到项目所在的文件夹,以F:\project为例. 删除.idea文件. 在 ...

  3. 使用注释来解决关于inline-block元素换行问题

    昨天群里有人问个问题:为什么button加了文字后,产生了对齐不一致的问题. 原因在于baseline的对齐问题. 然后就有人推荐了一篇文章:关于Vertical-Align你需要知道的事情 其中里面 ...

  4. Codeforces Round #439 (Div. 2) Problem E (Codeforces 869E) - 暴力 - 随机化 - 二维树状数组 - 差分

    Adieu l'ami. Koyomi is helping Oshino, an acquaintance of his, to take care of an open space around ...

  5. 0x17二叉堆之超市

    题目链接:https://www.acwing.com/problem/content/147/ 容易想到一个贪心策略:在最优解中,对于每个时间(天数) t,应该在保证不卖出过期商品的前提下,尽量卖出 ...

  6. Class DesiredCapabilities

    public class DesiredCapabilities extends java.lang.Object implements java.io.Serializable, Capabilit ...

  7. and与or的用法

    #1.判断下列语句的True和False # 1)1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 结果为T ...

  8. Bootstrap3基础 pagination 分页按钮 简单示例

      内容 参数   OS   Windows 10 x64   browser   Firefox 65.0.2   framework     Bootstrap 3.3.7   editor    ...

  9. Python3 tkinter基础 Canvas create_text 在画布上添加文字

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  10. debian下如何源码安装tmux

    一.源码安装ncurses库 1.1 获取源码 wget https://invisible-island.net/datafiles/release/ncurses.tar.gz tar xvf n ...