美文网首页Linux我用 LinuxLinux学习之路
思科→linux 第九章-基本脚本

思科→linux 第九章-基本脚本

作者: 走错片场的小萌新 | 来源:发表于2019-05-04 01:28 被阅读0次
  • 编写shell脚本
nano test.sh
命令 描述
Ctrl + W 搜索文档
按Ctrl + W,然后按Control + R. 搜索和替换
Ctrl + G. 显示所有可能的命令
Ctrl + Y / V. 页面向上/向下
Ctrl + C. 显示文件中的当前位置和文件大小
sh test.sh      #直接运行?
#chmod + x ./test.sh
sh test.sh    #也是直接运行? 但需要权限

ANIMAL = penguin ANIMAL包含字符串penguin(因为没有空格,所以显示了不使用引号的替代语法)。 ANIMAL="penguin"

#!/bin/bash

echo -n "What is your name? "
read NAME   #从键盘输入
echo "Hello $NAME!"
    1. 后跟数字N的美元符号对应于传递给脚本的第N个参数
      该$0变量包含脚本本身的名称
    1. exit命令设置自己脚本的退出代码:

在exit 1返回退出代码1给调用者。这甚至适用于shell,如果从命令行运行此脚本然后键入,echo $?您将看到它返回1。
按照惯例,退出代码0意味着“一切都好”。任何退出代码都大于0意味着发生了某种错误,这是特定于程序的。你上面看到grep使用1意味着字符串没有被发现。

  • if语句
#!/bin/bash

if grep -q root /etc/passwd; then
  echo root is in the password file
elif ["$ 1"="xx"];then           #$1引用变量并使用字符串比较运算符而不是数字版本(-eq)
 xxxxxxxxxxxxxx
else
  echo root is missing from the password file
fi   #结束else块 并不是结束if
  • 该test命令使您可以轻松访问比较和文件测试操作符if[]里的相当于test
test –f /tmp/foo; then
if [ -f /tmp/foo]; then
命令 描述
test –f /dev/ttyS0 0 如果文件存在
test ! –f /dev/ttyS0 0 如果该文件不存在
test –d /tmp 0 如果目录存在
test –x which ls 如果用户可以执行,ls则替换then的位置test
test 1 –eq 1 0 如果数字比较成功
test ! 1 –eq 1 NOT – 0 如果比较失败
test 1 –ne 1 更容易,test数字不平等
test “a” = “a” 0 如果字符串比较成功
test “a” != “a” 0 如果字符串不同
test 1 –eq 1 –o 2 –eq 2 -o 是OR:要么可以是相同的
test 1 –eq 1 –a 2 –eq 2 -a 是AND:两者必须相同

重要的是要注意test不同地看整数和字符串比较。01并且1通过数字比较是相同的,但不是通过字符串比较。您必须始终小心记住您期望的输入类型。

  • –gt大于,测试一个文件是否比另一个更新的方法等等。有关test man
  • 在if/ elif/ else测试可能会变得非常冗长和复杂。该case语句提供了一种使多个测试更容易的不同方法。
    该case语句以对被测表达式的描述开始:。这里的表达是引用的。case EXPRESSION in$1
#!/bin/bash

case "$1" in 
hello|hi)      #多个选项由垂直条分隔,垂直条|是许多编程语言中的OR运算
  echo "hello yourself"   #f返回 true则执行的命令
  ;;
goodbye)
  echo "nice to have met you"
  echo "I hope to see you again"
  ;;
*)          #同else? 因为匹配一切 确保最后一个匹配
  echo "I didn't understand that"
esac
  • 循环 for while
#!/bin/bash
for NAME in Sean Jon Isaac David; do
  echo "Hello $NAME"
done
for S in *; do      #使用*一个文件glob。这会通过shell扩展到当前目录中的所有文件
  echo "Doing something to $S"
done

每次迭代时执行一次test以查看它是否应该运行另一次

#!/bin/bash

i=0
while [ $i -lt 10 ]; do      # 小于10
  echo $i
  i=$(( $i + 1))
done
echo “Done counting”

思科网链接

相关文章

网友评论

    本文标题:思科→linux 第九章-基本脚本

    本文链接:https://www.haomeiwen.com/subject/acpwnqtx.html