一组Linux Shell Scripting小练习

# Linux shell将字符串分割成数组

result=$(facter | awk ‘/ipaddress/ && !/ipaddress_lo/ {print $1 " " $3}‘)
array=($result)

# 判断一个变量是否存在(不是判断是否为空)

if [ -z ${var+x} ]; then echo "var is unset"; else echo "var is set to ‘$var‘"; fi

# 判断一个变量是否为空

if [ "$var x" = " x" ]; then echo "var is empty"; else echo "var is set to ‘$var‘"; fi
if [ -z $var ]; then echo "var is empty"; else echo "var is set to ‘$var‘"; fi

#系统变量用后还原

# 关于IFS的定义:IFS,Internal Field Separator

# An Internal Field Separator (IFS) is an environment variable that stores delimiting characters.

# It is the default delimiter string used by a running shell environment.

# "$*" expands as "$1c$2c$3", where c is the first character of IFS

# When the expansion occurs within double quotes, it expands to a single word with the value of each parameter separated by the first character of the IFS special variable.

# That is, "$*" is equivalent to "$1c$2c...", where c is the first  char‐acter of the value of the IFS variable.

# If IFS is unset, the parameters are separated by spaces.  If IFS is null, the parameters are joined without intervening separators.

oldIFS="$IFS" 
IFS=" " 
array=($result)
IFS="$oldIFS" 
for i in ${array[@]}; do
echo $i
done

# 使用facter获取一组key-value

# facter的输出有换行符,必须把换行符替换成空格

# 将换行符替换成空格可以使用awk或sed

# awk -v RS="" ‘{gsub("\n"," ");print}‘

# echo -e "2 \n1" | sed ‘:a;N;$!ba;s/\n/ /g‘

result=$(facter | awk ‘/ipaddress/ && !/ipaddress_lo/ {print $1 " " $3}‘ | awk -v RS="" ‘{gsub("\n"," ");print}‘)
array=($result)
array_length=${#array[@]}

# 输出key

for (( i = 0; i < $array_length; i=i+2 )); do
	echo ${array[$i]}
done

# 输出value

for (( i = 1; i < $array_length; i=i+2 )); do
	echo ${array[$i]}
done

# 输出key-value

for (( i = 0; i < $array_length; i=i+2 )); do
	j=$i+1
	echo "${array[$i]} - ${array[$j]}"
done

--end--

时间: 2024-11-09 05:40:12

一组Linux Shell Scripting小练习的相关文章

linux shell 实用小实例

判断当前用户是否为root管理员,如果是,则执行tar对/etc/目录执行备份. #!/bin/bash# IF current user is root then backup the /etcif [ "$(id -u)" -eq 0 ];then  tar -czf /root/etc.tar.gz /etc &>/dev/nullelse  echo 'Please switch user on root.'  exit 9fi 要求用户输入密码,判断密码是否正确

Requirement-Driven Linux Shell Programming

*/--> Requirement-Driven Linux Shell Programming Table of Contents 1. Where can I find the basic Material about Linux Shell Programming? 2. How to time a function/program(Get the execution time of a program)? 3. How to pass parameters to a function?

&lt;zz&gt;linux运维自动化shell脚本小工具

from http://www.cnblogs.com/wang-li/p/5728461.html linux运维shell 脚本小工具,如要分享此文章,请注明文章出处,以下脚本仅供参考,若放置在服务器上出错,后果请自负 1.检测cpu剩余百分比 #!/bin/bash #Inspect CPU #Sun Jul 31 17:25:41 CST 2016 PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/hom

[Linux Command Line and Shell Scripting Bible] basic shell script

1 #!/bin/bash 2 ############################################ 3 # @content chapter 8,9 of Linux Command Line and Shell Scripting Bible 4 # @reader gavin 5 # @date 2014/12/14 6 ############################################ 7 CHAPTER 8 8 9 + user varriab

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

linux运维shell 脚本小工具,如要分享此文章,请注明文章出处,以下脚本仅供参考,若放置在服务器上出错,后果请自负 1.检测cpu剩余百分比 #!/bin/bash #Inspect CPU #Sun Jul 31 17:25:41 CST 2016 PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/wl/bin export PATH TERM=linux export TERM CpuResu

Linux shell (6)

1.linux shell函数: 将一组命令集或语句形成一个可用的块,这些语句块成为函数. 2.shell 函数的组成:  函数名:函数的名字,注意一个脚本中函数名要唯一,否则会引起调用函数紊乱  函数体:函数内部命令的集合,实现一个业务的功能 3.shell 函数定义的格式: function  函数名 #function可以省略,注意()内部不带任何参数 { 命令1 命令2 命令3 } 函数中参数的传递: 脚本中参数的传递  sh file_name.sh 参数1 参数2 ... 向函数传递

Linux Shell中反引号``, 单引号&#39;&#39;, 双引号&quot;&quot;, $混用总结

用一个小程序(argv.py)来演示下: #!/usr/local/bin/python3 import sys print('sys.argv has these', len(sys.argv), 'elements:', sys.argv) 运行与结果: # 首先是赋予执行权限 chmod 755 argv.py #1 一个空格一个命令行参数 ./argv.py I love Shell scripting. sys.argv has these 5 elements: ['./argv.p

分布式系统(linux shell zookeeper)

Linux介绍1 介绍 Linux操作系统是基于UNIX操作系统发展而来的一种克隆系统,它诞生于1991 年的 10 月5 日(这是第一次正式向外公布的时间).以后借助于Internet网络,并通过全世界各地计算机爱好者的共同努力,已成为今天世界上使用最多的一种UNIX 类操作系统,并且使用人数还在迅猛增长. 2 诞生 1991 年初,林纳斯·托瓦兹开始在一台386sx 兼容微机上学习minix 操作系统.通过学习,他逐渐不能满足于minix 系统的现有性能,并开始酝酿开发一个新的免费操作系统.

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执