文章列表
1009-字段分隔符和迭代器__循环
- 博客分类:
- bash
1、介绍
内部字段分隔符(Internal Field Separator,IFS)是shell脚本编程中的一个重要概念。
我们将会讨论单个数据流划分成不同数据元素的定界符(delimiter)。
内部字段分隔符是用于特定用途的定界符。
IFS是存储定界符的环境变量。它是当前shell环境使用默认定界字符串。
Comma Separated Value CSV 逗号分隔型数值
2、实战1
#!/bin/bash
data="name,sex,rollno,location"
To read each of the item in a variable, we ca ...
1、介绍
只要满足某些条件才能成功执行
2、实战
repeat()
{
while true
do
$@ && return
done
}
或把它放入shell的rc文件,列便于使用:
repeat() {while true; do $@ && return; done}
我们创建了函数repeat,它包含了一个无限while循环,该循环执行以参数形式(通过$@访问)
转入函数的命令。如果命令执行成功,则返回,进而退出循环。
3、增加延时
repeat wget -c http://www.example.com/ ...
1、介绍
read是一个重要的Bash命令,它用于从键盘或标准输入中读取文本。
我们可以使用read以交互形式读取用廖的输入,不过read能做的可不止这些。
read -n number_of_chars variable_name
从输入中读取n个字符并存入变量vvariable_name
2、read -n 2 var
echo $var
3、用无回显的方式读取密码
read -s var
4、显示提示信息:
read -p "Enter input:" var
5、在特的时限内读取输入
read -t timeout var
例如:
read -t 2 v ...
1、介绍
一个命令的输出作为别一个命令的输入,这种命令组合的输出可以被存储到一个变量中。
输入通常是通过stdin或参数传递给命令。输出要么出现在stderr,要么出现stdout。
当我们组合多个命令时,通常将stdin用于输入,stdout用于输出。
些时这些命令被称为过滤器(filter)。我们使用管道(pipe)连接每个过滤器。
管道操作符为|,如:
cmd1 |cmd2 | cmd3
2、实战
ls | cat -n > out.txt
我们可以用下面的方法读取由管道相连的命令序列的输出,叫子shell
cmd_output=$(ls | cat -n)
echo $cmd ...
1、介绍
echo
使用不带引号的echo时,没有办法在所要显示的文本中使用分号,因为在bash中被用作命令定界符。
别一个可用于在终端打印的是printf.
printf “Hello world”
可以在printf使用格式化字符串。
printf没有换行功能
#!/bin/bash
#Filename: printf.sh
printf "%-5s %-10s %-4s\n" No Name Mark
printf "%-5s %-10s %-4.2f\n" 1 Sarath 80.3456
printf "%-5s %-10s %- ...
0995-玩转变量和环境变量
- 博客分类:
- bash
1、介绍
在bash中,一个变量的值都是字符串。无论你给变量赋值时有没有加引号,都会以字符串的形式存储。
有一些特殊变量会被shell环境和操作系统环境和操作系统用来存储一些特别的值。这类变量叫环境变量。
*可以使用env命令查看所有与终端相关的环境变量。*
2、假如有一个叫gedit的应用程序在远行,我们可以使用pgrep命令获得gedit的进程ID:
pgrep gedit
12501
那么我们可以通过下面的命令获得与该进程有关的环境变量
cat /proc/12501/environ
GDM_KEYBOARD_LAYOUT=usGNOME_KEYRING_PID=1560USER=s ...
0996-使用函数添加环境变量
- 博客分类:
- bash
1、介绍
环境变量通常用于存储路径列表,这些路径用于搜索可执行文件、库文件等。
例如:$PATH、$LD_LIBRARY_PATH,它们通常看起来像这样:
PATH=/usr/bin;/bin
LD_LIBRARY_PATH=/usr/lib;/lib
这意味着只要shell需要运行二进制可执行文件时,它会首先查找/user/bin,然后是/bin
2、实战
export PATH=/opt/myapp/bin:$PATH
export LD_LIBRARY_PATH=/opt/myapp/lib;$LD_LIBRARY_PATH
0997-使用shell进行数学运算
- 博客分类:
- bash
1、介绍
在Bash shee环境中,可以使用let、(())和[]执行基本的算术操作。
而且在进行高级操作时,expr和bc这两工具也会非常有用。
2、可以用普通的变量赋值方法定义数值,这时,它会被存储为字符串。
然而,我们可以用一些方法使它能像数字一样进行计算。
#!/bin/bash
no1=4;
no2=5;
let命令可以直接执行基本的算术操作。当使用let时,变量名之前不需要使用$,如:
let result=no1+no2
echo $result
自加操作
let no1++
自减操作
let no1--
3、操作符[]的使用方法和let命令类似
result=$[no1 ...
1、介绍
文件描述符是与文件输入、输出相关的整数。它们用来跟踪已打开的文件。
最常见的文件描述符是stdin、stdout和stderr。
我们甚至可以将某个文件描述符的内容重定向到别一个文件描述符中。
下面给出一些对文件描述符进行操作和重定向的例子。
在编写脚本时会频繁使用标准输入、标准输出、标准错误。
通过内容把内容过滤将输出重定向到文件是我们平时里的基本任务之一。
当命令输出文本时,这些输出文本可能是错误信息,也可能是正常输出信息。
单靠查看输出的文本本身,我们没法区别那些是正常,那些是错误。
不过我们可以通过文件描述符解决这个问题,将那些与特定描述符关联的文本提取出来。
文件描述符是 ...
1、介绍
和其它脚本一样,Bash同样支持函数。让我们看看它如何定义和使用函数。
2、定义函数
function fname()
{
statements;
}
或者
fname()
{
statements;
}
3、调用函数
$fname;#执行函数调用
4、调用时传参数
fname arg1 arg2;#传递参数
5、参数传递给函数并由脚本进行访问
fname的定义,在函数内包含了各种访问函数参数的方法
fname()
{
echo $1,$2;#访问参数1和参数2
echo "$@";#以列表的方式一次性打印所有的参数
echo "$*&q ...
1、介绍
我们可以利用Bas内建的高度工具或按照易于调试的方式编写脚本。
2、使用选项-x,启动shell脚本的跟踪功能
bash -x script.sh
运行带有-x选项的脚本可以打印出所执行的每一行命令以及当前状态。
注意,也可以通过sh -x script.sh
3、使用set -x和set +x对脚本进行部分调试。
#!/bin/bash
#Filename: debug.sh
for i in {1..6};
do
set -x
echo $i
set +x
done
echo "Script executed"
在上面的脚本中,只会打印出echo $i的调试 ...
1、介绍
需要以不同的格式打印日期、设置日期和时间、根据日期和时间执行操作。
延时通常用于程序执行过程中提供一段等待时间(比如1秒)。
例如需要在脚本中对某项任务每隔5秒监视一次,就需要知道如何在程序中加入延时。
在Unix系统中,日期被存储成一个整数,其大小为自世界标准UTC1970年1月1日0时0分0秒起所流逝的秒数。
这种计时方式称为纪元时间。
2、读取日期
date
3、打印纪元时
date +%s
可以给定格式的日期串中得出对应的纪年时,在输入时有多种日期格式可供选择。
date --date "Thu Nov 18 08:07:21 IST 2010" +%s
...
1、介绍
当前终端的相关信息,如行数、列数、光标、位置、密码等。
2、行数和列数
tput cols
tput lines
3、打印当前终端名
tput longname
4、将光标移动到坐标(100,100)处
tput cup 100 100
5、设置终端背景色
tput setb n (n为0到7之间的值)
6、设置文本前景色
tput setf n
7、设置文本格式为粗体
tput bold
8、设置下划线的起目止
tput smu1
tput rmu1
9、删除从当前光标位置到行尾的所有内容
tput ed
10、在输入密码时,不应该显示输入内容。如下面的例子中,我们将看到如何使用st ...
1、创建格式
alias new_command='command sequence'
如:
alias install='sudo apt-get install'
可以使用:install pidgin代替sudo apt-get install pidgin
2、为了保持别名的一直有效性,可以在.bashrc文件中定义。
如:
echo 'alias cmd="command seq"' >>~/.bashrc
3、删除别名
unalias或alias example=来删除别名
4、创建一别名,当删除原始文件时,同时在backup目录保留副本
ali ...
1、介绍
数组是借助索引将多个独立的数据存储为一个集合。
普通数组只能使用整数作为数组索引。
Bash也支持关联数组,它可以使用字符串作为数组索引。在很多情况下,采用字符串式索引更容易理解,
这时候关联就派上用场了。
2、定义数组
array_var=(1 2 3 4 5 6)
或
array_var[0]="test1"
array_var[1]="test2"
3、打印出特定索引的数组元素内容
echo ${array_var[0]}
index=5
echo ${array_var[$index]}
4、以清单形式打印数据中的所有值
echo $ ...