1) 如何向脚本传递参数 ?

  ./script argument

  例子: 显示文件名称脚本

./show.sh file1.txt
cat show.sh
#!/bin/bash
echo $

2) 如何在脚本中使用参数 ?

  第一个参数 : $1,第二个参数 : $2

  例子 : 脚本会复制文件(arg1) 到目标地址(arg2)

./copy.sh file1.txt /tmp/
cat copy.sh
#!/bin/bash
cp $ $

3) 如何计算传递进来的参数 ?

$#

4) 如何在脚本中获取脚本名称 ?

$

5) 如何检查之前的命令是否运行成功 ?

$?

6) 如何获取文件的最后一行 ?

tail-

7) 如何获取文件的第一行 ?

head-

8) 如何获取一个文件每一行的第三个元素 ?

awk'{print $3}'

9) 假如文件中每行第一个元素是 FIND,如何获取第二个元素

awk'{ if ($1 == "FIND") print $2}'

10) 如何调试 bash 脚本

  将 -xv 参数加到 #!/bin/bash 后,例子:

#!/bin/bash –xv

11) 举例如何写一个函数 ?

function example {
echo "Hello world!"
}

12) 如何向连接两个字符串 ?

V1="Hello"
V2="World"
V3=${V1}${V2}
echo $V3 #输出
HelloWorld

13) 如何进行两个整数相加 ?

V1=
V2=
let V3=$V1+$V2
echo $V3 输出

  两个整数相加,还有若干种方法实现:

A=
B=
echo $(($A+$B)) # 方法
echo $[$A+$B] # 方法
expr $A + $B # 方法
echo $A+$B | bc # 方法
awk 'BEGIN{print '"$A"'+'"$B"'}' # 方法

14) 如何检查文件系统中是否存在某个文件 ?

if [ -f /var/log/messages ]
then
echo "File exists"
fi

15) 写出 shell 脚本中所有循环语法 ?

  for 循环 :

for i in$(ls);
do
  echo item:$i
done

  while 循环 :

#!/bin/bash
COUNTER=
while [ $COUNTER -lt ];
do
echo The counter is $COUNTER
let COUNTER=COUNTER+
done

  until 循环 :

#!/bin/bash
COUNTER=
until [ $COUNTER -lt ];
do
echo COUNTER $COUNTER
let COUNTER-=
done

16) 每个脚本开始的 #!/bin/sh 或 #!/bin/bash 表示什么意思 ?

  这一行说明要使用的 shell。#!/bin/bash 表示脚本使用 /bin/bash。对于 python 脚本,就是#!/usr/bin/python。

17) 如何获取文本文件的第 10 行 ?

head - file|tail -

18) 命令 “export” 有什么用 ?

  使变量在子 shell 中可用。

19) 如何在后台运行脚本 ?

  在脚本后面添加 “&”。

  据 @kashu 的意见,更好的答案是:

nohup command & 

  大部分时间我们可能是远程使用Linux,我碰到过由于网络断线使得在后台运行的command &没了...

20) "chmod 500 script" 做什么 ?

  使脚本所有者拥有可执行权限。

21) & 和 && 有什么区别

  & - 希望脚本在后台运行的时候使用它
  && - 当前一个脚本成功完成才执行后面的命令/脚本的时候使用它

22) ' 和 " 引号有什么区别 ?

  ' - 当我们不希望把变量转换为值的时候使用它。
  " - 会计算所有变量的值并用值代替。
23) 如何在脚本文件中重定向标准输出和标准错误流到 log.txt 文件 ?

  在脚本文件中添加 "exec >log.txt 2>&1" 命令。

24) 如何只用 echo 命令获取字符串变量的一部分 ?

echo ${variable:x:y}
x - 起始位置
y - 长度 #例子:
variable="My name is Petras, and I am developer."
echo ${variable::} # 会显示 Petras

25) 如果给定字符串 variable="User:123:321:/home/dir",如何只用 echo 命令获取 home_dir ?

echo ${variable#*:*:*:}

echo ${variable##*:}

26) 如何从上面的字符串中获取 “User” ?

echo ${variable%:*:*:*}

echo ${variable%%:*}

27) 如何使用 awk 列出 UID 小于 100 的用户 ?

awk -F: '$3<100' /etc/passwd

28) 写程序为用户计算主组数目并显示次数和组名

cat /etc/passwd|cut -d: -f4|sort|uniq -c|while read c g
do
{ echo $c; grep :$g: /etc/group|cut -d: -f1;}|xargs -n
done

29) 如何在 bash shell 中更改标准的域分隔符为 ":" ?

  IFS=":"

30) 如何获取变量长度 ?

  ${#variable}

31) 如何打印变量的最后 5 个字符 ?

echo ${variable: -}

32) ${variable:-10} 和 ${variable: -10} 有什么区别?

  ${variable:-10} - 如果之前没有给 variable 赋值则输出 10;如果有赋值则输出该变量
  ${variable: -10} - 输出 variable 的最后 10 个字符
33) 如何只用 echo 命令替换字符串的一部分 ?

echo ${variable//pattern/replacement}

34) 哪个命令将命令替换为大写 ?

tr '[:lower:]' '[:upper:]'

35) 如何计算本地用户数目 ?

wc -l /etc/passwd|cut -d" " -f1 或者 cat /etc/passwd|wc -l

36) 不用 wc 命令如何计算字符串中的单词数目 ?

set ${string}
echo $#

37) "export $variable" 或 "export variable" 哪个正确 ?

  export variable

38) 如何将整数 a 加到 b 并赋值给 c ?

c=$((a+b))

c=`expr $a + $b`

c=`echo "$a+$b"|bc`

39) 如何去除字符串中的所有空格 ?

echo $string|tr -d " "

40) 写出输出数字 0 到 100 中 3 的倍数(0 3 6 9 …)的命令 ?

for i in {....}; do echo $i; done

for (( i=; i<=; i=i+ )); do echo "Welcome $i times"; done

41) 如何打印传递给脚本的所有参数 ?

echo $*

echo $@

42) [ $a == $b ] 和 [ $a -eq $b ] 有什么区别

  [ $a == $b ] - 用于字符串比较
  [ $a -eq $b ] - 用于数字比较
43) = 和 == 有什么区别

  = - 用于为变量赋值
  == - 用于字符串比较

44) 如何检查字符串是否以字母 "abc" 开头 ?

  [[ $string == abc* ]]

45) [[ $string == abc* ]] 和 [[ $string == "abc*" ]] 有什么区别

  [[ $string == abc* ]] - 检查字符串是否以字母 abc 开头
  [[ $string == "abc" ]] - 检查字符串是否完全等于 abc
46) 如何列出以 ab 或 xy 开头的用户名 ?

egrep "^ab|^xy" /etc/passwd|cut -d: -f1

47) bash 中 $! 表示什么意思 ?

  后台最近执行命令的 PID.

48) $? 表示什么意思 ?

  前台最近命令的结束状态。

49) 如何输出当前 shell 的 PID ?

  echo $$

50) $* 和 $@ 有什么区别*

  $* - 以一个字符串形式输出所有传递到脚本的参数
  $@ - 以 $IFS 为分隔符列出所有传递到脚本中的参数
51) 如何在 bash 中定义数组 ?

array=("Hi" "my" "name" "is")

declare -a arrayname
arrayname[]=
arrayname[]=qwer

52) 如何打印数组的第一个元素 ?

echo ${array[]}

53) 如何打印数组的所有元素 ?

echo ${array[@]}

54) 如何输出所有数组索引 ?

echo ${!array[@]}

55) 如何移除数组中索引为 2 的元素 ?

unset array[]

56) 如何在数组中添加 id 为 333 的元素 ?

array[]="New_element"

57) shell 脚本如何获取输入的值 ?

  a) 通过参数

./script param1 param2

  b) 通过 read 命令

read -p "Destination backup Server : " desthost

58) 在脚本中如何使用 "expect" ?

/usr/bin/expect << EOD
spawn rsync -ar ${line} ${desthost}:${destpath}
expect "*?assword:*"
send "${password}\r"
expect eof
EOD

shell脚本小集锦的更多相关文章

  1. linux运维自动化shell脚本小工具

    linux运维shell 脚本小工具,如要分享此文章,请注明文章出处,以下脚本仅供参考,若放置在服务器上出错,后果请自负 1.检测cpu剩余百分比 #!/bin/bash #Inspect CPU # ...

  2. shell脚本小案例

    1.获取远程ftp数据到本地目录 #!/bin/bash ftp -n<<! open 135.0.24.19 user exchange exchange binary cd /idep ...

  3. shell脚本小实例

    本文收集了一堆的shell脚本技巧,我说过,我写博客主要是作一些学习笔记,方便自己查阅,所以,我会搞出这么一篇文章,也没有什么不可理解的.关于这些技巧的出处,诶,我也忘了,可能来自theunixsch ...

  4. java调用shell脚本小demo

    复制指定文件cpp.sh: [root@localhost soft]# vim cpp.sh#!/bin/bash name="$1"\cp /home/soft/test/${ ...

  5. 制作service服务,shell脚本小例子(来自网络)

    事先准备工作:源码安装apache .安装目录为/usr/local/httpd 任务需求:1.可通过 service httpd start|stop|status|restart 命令对服务进行控 ...

  6. SHELL 脚本小技巧

    脚本很简单,直接上功能介绍及脚本,可以做模板使用: 记录日志,记录脚本开始执行时间.结束时间 usage 函数,脚本需接参数执行,避免误执行,告诉用户,这个脚本的使用方法 加锁,创建锁文件,脚本不允许 ...

  7. hbase离线定时入库shell脚本-小栗子

    #!/bin/bash #######数据类型(cdr,ims,pc,.ngn_sip)###### dir=*** ############# #原始文件地址 oripath=/bigdata/da ...

  8. Shell脚本 小程序演示

    一般的shell编程 场景贯穿了几个熟知的步骤: ●显示消息●获取用户输入●存储值到文件●处理存储的数据 这里写一个小程序 包含以上几部 #!/bin/bash while true do #echo ...

  9. shell脚本小技巧

    输入参数错误时,退格会出现^H,这个时候只要在脚本顶部加一条语句:stty erase ^h就可以了 #!/bin/sh stty erase ^h

随机推荐

  1. mui init 出现无法引入子页面问题

    1. 检查项目中是否重复出现了 mui.init() 函数; mui.init({ subpages: [{ styles: { // top: "44px", top: &quo ...

  2. 尚硅谷springboot学习4-helloworld探究

    1.POM文件 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spr ...

  3. Haskell语言学习笔记(85)Async

    安装 async $ cabal install async async-2.2.1 installed async / wait / concurrently async :: IO a -> ...

  4. Ubuntu下的LNMP环境

    保证联网的情况下,直接参照http://lnmp.org/install.html进行安装,以下花括号内为原文引用: { 1.使用putty或类似的SSH工具登陆VPS或服务器: 登陆后运行:scre ...

  5. Delphi接口的底层实现

    引言 接口是面向对象程序语言中一个很重要的元素,它被描述为一组服务的集合,对于客户端来说,我们关心的只是提供的服务,而不必关心服务是如何实现的:对于服务端的类来说,如果它想实现某种服务,实现与该服务相 ...

  6. (转)MySQL 获得当前日期时间 函数

    select *from High_valwhere SerialDate >= curdate() and SerialDate < date_add(curdate(), interv ...

  7. Java8给出一个时间段,计算该时间范围由哪些日期(天)和月份组成

    1. 判断时间段是否合法: 2. 循环判断记录数是否大于0 3. 根据起始时间算出该月的第一天.最后一天和这个月有多少天: 4. 判断起始时间是否是该月第一天,如果是,再判断结束时间与该月最后一天的大 ...

  8. String intern 方法 jdk中的描述

    一个初始为空的字符串池,它由类 String 私有地维护. 当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(用 equals(Object) 方法确定),则返回池中 ...

  9. jenkins 添加节点问题

    没有 Launch agent via Java Web Start 选项 Manage Jenkins > Configure Global Security > TCP port fo ...

  10. get请求中url传参中文乱码问题--集锦

    一:get请求url中带有中文参数,有三种方式进行处理防止中文乱码 1.如果使用tomcat作为服务器,那么修改tomcat配置文件conf/server.xml中,在  <Connector  ...