Shell积累

1.shift命令

shift参数将所有参数变量左移一个位置,使$2变为$1,$3变为$2,…依此类推,但$0不变。

1
2
3
4
5
6
7
8
#!/bin/bash
echo $0
echo $1
echo $2
shift
echo $0
echo $1
echo $2

运行:

1
sh test.sh 1 2 3

结果:

1
2
3
4
5
6
test.sh
1
2
test.sh
2
3

2.输出到文件

shell编程输出分为两种,一种直接打印在控制台,另一种输出到文件中(即输出重定向),输出到文件中用“>”字符输出。
“>”后面直接跟文本文件名,如果不存在,自动创建;如果已经存在则覆盖;
“>>”追加到文件中。
输出符后面加”!”,将命令执行结果输出到文件;
输出符后面加”&”,将所有显示信息输出到文件;

Shell学习(练习题解析)

练习题网址百度文库

1.编写一个shell脚本,完成功能

1)显示文字“Waiting for a while…”;
2)长格式显示当前目录下面的文件和目录,并输出定向到/home/yuegang02/file.txt文件;
3)定义一个变量,名为s,初始值“Hello”;
4)使该变量输出重定向到/home/yuegang02/string.txt。
代码:
1)

1
2
#!/bin/bash
echo "Waiting for a while ..."

2)

1
2
#!/bin/bash
ls -al > /home/yuegang02/file.txt

3)

1
2
#!/bin/bash
s=Hello

4)

1
2
3
#!/bin/bash
s=Hello
echo s > /home/yuegang02/string.txt

2.批量复制操作

编写一个shell脚本,它把第二个位置参数及其以后的各个参数指定的文件复制到第一个位置参数指定的目录中。
代码:

1
2
3
4
5
6
7
#/bin/bash
dir=$1
while [ $2 ]
do
cp $dir $2
shift
done

注意:shift用法

3.移动文件,并显示目录内容

编写一个shell脚本,利用for循环将当前目录下的.c文件移动到指定的目录,并按文件大小显示出移动后指定的目录的内容。

1
2
3
4
5
6
7
8
9
#/bin/bash
for name in `ls *.c`
do
if [ ! -d ./file_txt ] ;
then
mkdir ./file_txt
fi
cp ${PWD}/$name ./file_txt
done