shell变量学习记录

shell变量学习记录

大家好,又见面了,我是全栈君。

个人学习笔记,留着以后查阅,故没有做过多说明,

来自书籍《悦知文化·实战Linux Shell编程与服务器管理》(卧龙小三


  1. #!/bin/bash  
  2. #测试变量存在与否的基本用法  
  3.  
  4. #DEBUG=1 
  5. [ -n ${DEBUG-‘0’} ] && set -v  
  6. #定义两个变量,用hostname获取当前主机名  
  7. myhostname=$(hostname)  
  8. myhostip=  
  9. mydir=  
  10. msge=  
  11. msgg=msggisok  
  12. #取消变量myhostip  
  13. unset myhostip  
  14. #变量引用,语法${待测变量-默认值},若变量不存在,则符合判断,以传回默认值作为处置  
  15. #此处变量myhostname变量存在,故不显示data,myhostip变量前面已经取消,故显示’ip is not exist‘  
  16. a=${myhostname-‘data’}  
  17. b=${myhostip-‘”ip is not exist”‘}  
  18. #此处由于前面$mydir定义为空,值存在,故不传回默认值  
  19. c=${mydir-‘dir is null’}  
  20. #此处的$count变量不存在,用=设置值为100  
  21. d=${
    count:=100}  
  22. #“-”变量不存在,就显示默认值  
  23. e=${msge:-‘变量不存在’}  
  24. f=${msgf-:msg2}  
  25. #变量存在,就显示真实的值  
  26. g=${msgg:+真实值}  
  27. echo $a $b $c $d $e $f $g  
  28. #变量不存在,就显示错误,并显示设置的默认值  
  29. z=${msgz:?msgz}  
  30. #!/bin/bash  
  31.  
  32. NETWORK_PATH=$(/bin/ls /etc/rc.d/init.d/network)  
  33. echo ${NETWORK_PATH}  
  34. echo -e ‘语法${变量:位置起点},此处用”:2″‘  
  35. network=${NETWORK_PATH:2}  
  36. echo ${network}  
  37.  
  38.  
  39. NETWORK_PATH2=$(/bin/ls /etc/rc.d/init.d/network)  
  40. echo ${NETWORK_PATH2}  
  41. echo -e ‘语法${变量:位置起点:长度}, 此处用”2:4″‘  
  42. network2=${NETWORK_PATH2:2:4}  
  43. echo ${network2}  
  44.  
  45. #!/bin/bash  
  46.  
  47. #显示命令的本身  
  48. echo $0  
  49. #显示第二个输入  
  50. echo ${@:1}  
  51. echo ${@:2}  
  52. echo ${@:3}        
  53. echo ${@:4}  
  54. echo ${@:5}  
  55. echo ${@:3:2}  
  56.  
  57. A=abcd 
  58. echo ${#A}  
  59. #!/bin/bash  
  60.  
  61. file=$(/bin/ls /etc/rc.d/init.d/network)  
  62. echo $file  
  63. echo “\${变量#样式},由前面开始,删除最短匹配的字符串”  
  64. a=${file#/*/}  
  65. echo $a  
  66. echo “\${变量##样式},由前面开始,删除最长匹配的字符串”  
  67. b=${file##/*/}  
  68. echo $b  
  69. echo “\${变量%样式},由前面开始,删除最短匹配的字符串”  
  70. c=${file%/*}  
  71. echo $c  
  72. echo “\${变量%%样式},由前面开始,删除最长匹配字符串”  
  73. d=${file%%/*}  
  74. echo $d  
  75. echo “\${变量/样式/替换字符串},替换第一个匹配的字符串”  
  76. e=${file/d/NEW_WORLD}  
  77. echo $e  
  78. echo “\${变量//样式/替换字符串},替换所有匹配的字符串”  
  79. f=${file//d/NEW_WORLD}  
  80. echo $f  
  81. echo “\${变量/样式/},删除第一个符合样式的字符串”  
  82. g=${file/./}  
  83. echo $g  
  84. echo “\${变量//样式/},删除所有符合样式的字符串”  
  85. h=${file//./}  
  86. echo $h  
  87. echo “\${变量/#样式/},删除开头第一个符合样式的字符串”  
  88. i=${file/#\//}  
  89. echo $i  
  90. I=“AB,cd,ABCDAB” 
  91. echo $I  
  92. echo “\${变量/%样式/},删除结尾第一个符合样式的字符串”  
  93. j=${I/%AB/}  
  94. #获取变量名称列表  
  95. AB=‘abcd’ 
  96. ABCD=‘efghi’ 
  97. echo $AB $ABCD  
  98. dir_file=“$AB$ABCD” 
  99. echo “${!开头字符串@},把所以指定字符串开头的变量名称列出”  
  100. echo ${!AB@}  
  101.  
  102. #获取数组索引列表  
  103. NUM=(a b c d e f g)  
  104. echo “${!数组变量[@],把数组变量的所有索引列出来}”  
  105. k=${!NUM[@]}  
  106. echo $k  
  107. for i in “${!NUM[@]}”  
  108. do  
  109.   echo “num $i:${NUM[$i]}”  
  110. done  
  111.  
  112. #!/bin/bash  
  113.  
  114. PASSWD_PATH=$(ls /etc/passwd)  
  115. PATH=${PASSWD_PATH:+’OK’}  
  116. echo $PATH  
  117. #!/bin/bash  
  118. PS3=“请选择:” 
  119. select A in a b c d  
  120. do  
  121. echo $A $REPLY  
  122. break  
  123. done 
  124.  
  125. 三目运算
  126. a=1
  127. b=2
  128. echo $(($a==$b?0:1)) #显示结果为1
  129. echo $(($a!=$b?0:1)) #显示结果为0
     

本文转自it你好 51CTO博客,原文链接:http://blog.51cto.com/itnihao/885775,如需转载请自行联系原作者

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/107967.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • input file accept限制文件上传类型

    input file accept限制文件上传类型一、需求上传文件只允许上传doc、docx、jpg、png、gif和pdf格式的文件,需要在前后端进行双重限制二、前端实现1、前端限制通过inputfileaccept属性实现,在accept中以逗号分隔开【图一】,便可以实现选择文件时,默认只可选择设定格式的文件【图二】,需要说明的是,MIME格式image/jpeg对应.jpg,.jpeg等几种格式,不能达…

  • 新浪微博模仿的是_微博随便看看在哪

    新浪微博模仿的是_微博随便看看在哪这几天学会了ListView组件,希望能帮到你们。    程序测试图如下:       1.代码如下:   MainActivity.java  packagecom.example.weibokankan;importjava.util.ArrayList;importjava.util.List;

    2022年10月26日
  • C++如何做字符串分割(5种方法)

    C++如何做字符串分割(5种方法)1、用strtok函数进行字符串分割原型:char*strtok(char*str,constchar*delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include<string.h>#include<stdio.h&

  • vmware16安装centos8_虚拟机centos6安装教程

    vmware16安装centos8_虚拟机centos6安装教程VMware12安装centOS8(vm虚拟机安装centos8教程)前几天Centos8发布了,尽管他是8的第一个版本,有着许多的bug那么今天我们就在VM12上面安装centOS8吧,8这个图形化界面我个人感觉有点丑首先下载iso文件百度下点击进入官网点击马上获得centos然后选择这个选择离你近的镜像地址,点击下载打开vm12点击新建虚拟机点击下一步,如下图这样…

  • MQTT服务器搭建非常详细流程(每一步都有,CMD窗口都有)

    MQTT服务器搭建非常详细流程(每一步都有,CMD窗口都有)搭建过程想搭建一个MQTT服务器,刚好找到ApacheActiveMQArtemis支持,而且是基于Java开发的,那跨平台就很方便。以下是在Windows7(64位)系统下搭建:下载首先下载ApacheActiveMQArtemis,官方地址:https://activemq.apache.org/components/artemis/download/下载bin包就可以安装随便解压Z:\apache-artemis-2.9.0创建使用cmd命令行进入cd->Z:\apa

  • MySQL 日期字符串转换

    MySQL 日期字符串转换日期查询1)查询当前时间日期now()获取当前日期和时间//2018-04-1218:18:57curdate()当前日期,///2018-04-12curtime()当前时间//18:18:57current_time();//同curtime(),current_timecurrent_date();//同curdate()…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号