bash 学习一 变量、参数、判断与循环
2015-12-18 17:52
639 查看
#!/bin/bash#!第一行不是注释,而是指定使用的语言是什么,即告诉系统用什么脚本语言执行,这里用bash执行。
变量定义: AAA=112222333 声明局部变量,在此层次的bash中访问
export AAA=111222333 声明全局变量,只会在bash本身及他的子bash中访问到
获取变量:$AAA
例如
echo $AAA参数
$1 代表第一个参数
$2 代表第二个参数
类推
$?
查看上一个命令执行是否成功0(zero)表示成功非零表示失败
$$
用于获取脚本进程的PID
读取用户输入的字符并赋值给变量AAA
read -p 'pleash input some words!' AAA-p 表示提示
SHELL脚本的执行方式
1. 输入完整的路径例如 /tmp/test.sh
2. 输入相对路径 在 pwd=/tmp下
./test.sh
bash ./test.sh bash /tmp/test.sh使用1,2要求test.sh有x(可执行例如chmod a+x /tmp/test.sh)权限
使用 bash +完整/相对路径 不需要 shell脚本具有x权限。
以上两种执行方式都是在子shell中声明的变量在他们的父shell中无法获取,即使export也不行。可以用
pstree |grep -A2 -B2 '\<grep\>'查看grep语句在哪个bash中执行。
使用
. ./test.sh表示在当前的shell中执行脚本不会新开一个子shell,两个点之间有一个空格。
也可以使用完整的路径例如:
. /tmp/test.sh同样点(dot)和斜线(slash)之间有一个空格。
条件控制判断
[ ] && ||
if
[ abc ] echo $?[ 变量 ] 变量大于零判断结果为真(0)
[ $USER = root ]判断用户是否是root
[ -b /dev/hda ] && echo 'You have an ide device' [ -b /dev/sda ] && echo 'You have a scsi device'-b 判断块设备是否存在
-f 判断普通文件是否存在
-d 判断目录是否存在
具体可产考man bash
bash -vx ./test.bash
可用于调试bash -v表示执行过程可见 -x 替换变量值可见执行
if判断
if [ -b /dev/hda ] then echo "You have an ide device" elif [ -b /dev/sda ] then echo "You dont have a scsi device" else echo "You have nether scsi nor ide device ." fi
! [ -f /etc/passwd ]!表示否定判断的结果。注意! 和 [ 中间有一个空格,若无空
如
export AAA=123 echo $?
[ -z $AAA ]判断AAA 是否为空
本文出自 “computerscience” 博客,请务必保留此出处http://changgusan.blog.51cto.com/1948748/1726173
相关文章推荐
- shell中${ } 用法详解
- shell脚本中的EOF以及文件重定向
- shell脚本中的EOF以及文件重定向
- 【实验一】bashrc source nfs tftpd-hpa
- secureCRT shell终端不能backspace等问题解决
- shell小记:eval
- Git Bash中文乱码
- shell定时任务
- Azure PowerShell 1.0.0以上版本在中国Azure使用的注意事项
- Azure PowerShell 1.0.0以上版本在中国Azure使用的注意事项
- Azure PowerShell 1.0.0以上版本在中国Azure使用的注意事项
- Azure PowerShell 1.0.0以上版本在中国Azure使用的注意事项
- crontab shell调用spark-sql,实现周期性动态SQL批量自动执行
- linux shell 字符串操作(长度,查找,替换)详解
- profile与bashrc
- 用shell打印出乘法口诀
- shell练习1
- shell检测输入的IP是否合法
- linux Shell编程入门
- linux shell用法(5)-- awk命令