Java教程

shell脚本基础知识

本文主要是介绍shell脚本基础知识,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.常见的shell内置变量有哪些?

变 量含义
$0 脚本名字
$1 位置参数 #1
$2 - $9 位置参数 #2 - #9
${10} 位置参数 #10
$# 位置参数的个数
"$*" 所有的位置参数(作为单个字符串) (必须被引用起来, 否则默认为"$@")
"$@" 所有的位置参数(每个都作为独立的字符串)
${#*} 传递到脚本中的命令行参数的个数
${#@} 传递到脚本中的命令行参数的个数
$? 上一条命令返回值(0表示成功,可以echo输出查看)
$$ 脚本运行的当前进程ID(PID)
$- 传递到脚本中的标志(使用set)
$_ 之前命令的最后一个参数
$! 运行在后台的最后一个作业的进程ID(PID)

 

2.如何向脚本传递并使用参数 ?

./script argument1 argument2 argument3

在脚本中,$1引用第一个参数,$2引用第二个参数,依次类推;

$#可以计算向脚本传递的参数个数;

$*和$@都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数;

"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@"和$@输出结果一致

脚本test.sh内容如下

#!/bin/bash
echo '$*输出如下:'
for var in $*
do
echo "$var"
done
echo '"$*"输出如下:'
for var in "$*"
do
echo "$var"
done
echo '$@输出如下:'
for var in $@
do
echo "$var"
done
echo '"$@"输出如下:'
for var in "$@"
do
echo "$var"
done

 

传递参数执行: ./test.sh va1 va2 va3 ,输出结果如下:

$*输出如下:
va1
va2
va3
va4
"$*"输出如下:
va1 va2 va3 va4
$@输出如下:
va1
va2
va3
va4
"$@"输出如下:
va1
va2
va3
va4

3.文件类型的测试操作有哪些?

操作测试条件操作测试条件
-e 文件是否存在 -s 文件大小不为0
-f 是一个标准文件    
-d 是一个目录 -r 文件具有权限
-h 文件是一个符号链接 -w 文件具有权限
-L 文件是一个符号链接 -x 文件具有执行权限
-b 文件是一个块设备    
-c 文件是一个字符设备 -g 设置了sgid标记
-p 文件是一个管道 -u 设置了suid标记
-S 文件是一个socket -k 设置了"粘贴位"
-t 文件与一个终端相关联    
-N 从这个文件最后一次被读取之后, 它被修改过 F1 -nt F2 文件F1比文件F2 *
-O 这个文件的宿主是你 F1 -ot F2 文件F1比文件F2 *
-G 文件的组id与你所属的组相同 F1 -ef F2 文件F1和文件F2都是同一个文件的硬链接 *
! "非" (反转上边的测试结果)    

4.如何获取一个文件指定行列(第x行第y列)的内容?

awk 'NR=x{print $y}' filename

更多awk相关可以参考awk命令入门 - 博客园 (cnblogs.com)

这篇关于shell脚本基础知识的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!